努力
奋斗

如何在京东云主机上部署Docker环境?

在京东云(JD Cloud)主机(即云服务器,CVM)上部署 Docker 环境,整体流程与标准 Linux 服务器类似。以下是详细、安全、生产就绪的部署步骤(以主流 CentOS 7/8 或 Ubuntu 20.04/22.04 为例),涵盖环境准备、Docker 安装、基础配置及验证。


✅ 前提条件

  • 已开通京东云账号,并成功创建一台 Linux 云服务器(CVM)(推荐:CentOS 7.9+ / Ubuntu 20.04+,内存 ≥2GB,系统盘 ≥40GB)
  • 已通过 SSH 登录服务器(如 ssh -i key.pem root@your-server-ip)
  • 确保服务器网络通畅(可访问公网,用于下载 Docker 官方包)

🐳 一、系统准备(推荐执行)

# 1. 更新系统(CentOS)
sudo yum update -y

# 或 Ubuntu
sudo apt update && sudo apt upgrade -y

# 2. 安装必要依赖(CentOS)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# Ubuntu
sudo apt install -y curl gnupg2 software-properties-common ca-certificates

# 3. 卸载旧版 Docker(如有)
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 2>/dev/null || true
# Ubuntu
sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/null || true

🚀 二、安装 Docker(推荐使用官方源)

✅ 方式1:官方仓库安装(最稳定,推荐)

▶️ CentOS/RHEL 系统:

# 添加 Docker 官方 YUM 源(阿里云镜像提速,国内更快)
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 清理缓存并安装最新稳定版
sudo yum makecache
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动并设为开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 验证
sudo docker --version
sudo docker run hello-world  # 首次运行会拉取镜像并输出欢迎信息

▶️ Ubuntu 系统:

# 添加 GPG 密钥和仓库
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 启动服务
sudo systemctl start docker
sudo systemctl enable docker

# 验证
sudo docker --version
sudo docker run hello-world

💡 提示:使用 https://mirrors.aliyun.com 可显著提升国内下载速度(京东云同属国内网络,效果佳)。


🔐 三、安全与权限优化(重要!)

1. 将当前用户加入 docker 组(避免每次用 sudo)

sudo usermod -aG docker $USER
# ⚠️ 注意:需重新登录 SSH 或执行以下命令刷新组权限
newgrp docker  # 或直接退出重连 SSH

✅ 验证(无需 sudo):

docker ps  # 应正常显示空容器列表

2. 配置 Docker 镜像提速器(强烈推荐,解决 pull 缓慢问题)

京东云用户可选用:

  • 阿里云镜像提速器(免费注册获取)👉 https://cr.console.aliyun.com

  • 或使用公开提速地址(临时可用):

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": [
        "https://docker.mirrors.ustc.edu.cn",
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com"
      ],
      "live-restore": true
    }
    EOF
    
    sudo systemctl daemon-reload
    sudo systemctl restart docker

✅ 验证提速是否生效:

sudo docker info | grep "Registry Mirrors" -A 5

🛠 四、(可选)安装 Docker Compose(v2 推荐)

Docker Compose v2 已集成进 docker compose(非 docker-compose 命令):

# Ubuntu/CentOS 均可使用:
DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d" -f4)
sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# 创建软链接(兼容旧脚本)
sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose

# 验证
docker-compose --version  # 或 docker compose version(v2+)

✅ 注:Docker Desktop 已弃用独立 docker-compose 二进制;生产环境建议用 docker compose(需 Docker Engine ≥20.10)。


🧪 五、快速验证部署成功

# 1. 查看 Docker 状态
sudo systemctl status docker

# 2. 运行测试容器
docker run -d -p 8080:80 --name nginx-test nginx:alpine
curl http://localhost:8080  # 应返回 Nginx 欢迎页 HTML

# 3. 查看运行中容器
docker ps

# 4. 清理测试(可选)
docker stop nginx-test && docker rm nginx-test
docker image prune -f

📌 六、京东云特别注意事项

项目 说明
🔒 安全组 ✅ 务必在京东云控制台 → 安全组 中放行所需端口(如 8080, 2375/2376 若需远程 API)⚠️ 不建议开放 2375(未加密),如需远程管理请启用 TLS 认证
💾 磁盘空间 Docker 默认存储在 /var/lib/docker,建议挂载独立数据盘(京东云可在线扩容或挂载新云硬盘),并修改 daemon.json 指定 data-root
🌐 网络模式 京东云 CVM 使用 VPC 网络,Docker 默认 bridge 模式与宿主机网络隔离,容器可通过宿主机端口映射访问;如需容器直通 VPC 网络,可考虑 macvlan 或 ipvlan(高级场景)
📈 监控告警 可接入京东云 云监控(Cloud Monitor),自定义采集 docker stats 数据或部署 Prometheus + cAdvisor

📚 附:一键脚本(可选,谨慎使用)

将以下内容保存为 install-docker.sh,上传至服务器后执行:

#!/bin/bash
# 京东云 Docker 一键安装脚本(Ubuntu/CentOS 自适应)
set -e

detect_os() {
  if command -v lsb_release >/dev/null; then
    DISTRO=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
  elif [ -f /etc/os-release ]; then
    DISTRO=$(grep "^ID=" /etc/os-release | cut -d= -f2 | tr -d '"')
  else
    echo "无法识别操作系统,退出。"
    exit 1
  fi
}

install_docker_ubuntu() {
  apt update
  apt install -y curl gnupg2 software-properties-common
  curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list
  apt update
  apt install -y docker-ce docker-ce-cli containerd.io
}

install_docker_centos() {
  yum install -y yum-utils device-mapper-persistent-data lvm2
  yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  yum install -y docker-ce docker-ce-cli containerd.io
}

main() {
  detect_os
  case $DISTRO in
    ubuntu|debian) install_docker_ubuntu ;;
    centos|rhel|almalinux|rocky) install_docker_centos ;;
    *) echo "不支持的系统:$DISTRO"; exit 1 ;;
  esac

  systemctl enable docker && systemctl start docker
  usermod -aG docker $USER
  echo '{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}' > /etc/docker/daemon.json
  systemctl daemon-reload && systemctl restart docker
  echo "✅ Docker 安装完成!请重新登录 SSH 或执行 'newgrp docker'。"
}

main "$@"

运行:

chmod +x install-docker.sh
./install-docker.sh

✅ 至此,你的京东云主机已成功部署生产级 Docker 环境!
下一步可部署应用(如 Nginx、MySQL、Spring Boot)、搭建私有 Registry,或接入 CI/CD(如 Jenkins/GitLab Runner)。

需要我为你提供:

  • 🐳 Docker 部署 Spring Boot 的完整示例?
  • 🌐 在京东云上搭建 Harbor 私有镜像仓库?
  • ☁️ 结合京东云对象存储(JSO)做镜像备份?
  • 📊 Docker + Prometheus + Grafana 监控方案?

欢迎随时告诉我 👇 我可为你定制化输出!

未经允许不得转载:云服笔记 » 如何在京东云主机上部署Docker环境?