努力
加油

在京东云服务器上如何安装和配置Docker?

在京东云(JD Cloud)的 ECS(弹性云服务器)上安装 Docker,其实和在其他主流 Linux 发行版(如 CentOS、Ubuntu)上的操作大同小异。核心差异主要在于网络环境配置和镜像源提速,因为国内访问 Docker Hub 官方源通常不稳定,且京东云的安全组默认可能拦截了某些端口。

下面以目前企业级使用最广泛的 CentOS 7/8 或 Alibaba Cloud Linux / Ubuntu 为例,给出一个稳定、生产可用的实操方案。我会尽量避开那些“复制粘贴就报错”的过时教程,直接给经过验证的步骤。

一、 前置准备:检查系统与安全组

  1. 确认内核版本
    Docker 对内核版本有要求,建议内核版本不低于 3.10。执行:

    uname -r

    如果版本过低,建议先升级内核或更换更高版本的操作系统镜像。

  2. 安全组配置(关键)
    很多新手装完 Docker 发现容器跑不起来或者外部连不上,90% 是因为京东云控制台里的安全组没放行。

    • 登录京东云控制台 -> 计算 -> 云服务器实例 -> 找到你的 ECS -> 点击“安全组”。
    • 确保入方向规则中放行了你需要的业务端口(比如容器的 80, 443, 8080 等)。
    • Docker 守护进程本身监听的是 Unix Socket (/var/run/docker.sock),不需要额外开放 TCP 端口,除非你显式配置了远程 API 访问(生产环境不建议这样做)。
  3. 关闭防火墙干扰(可选但推荐测试阶段)
    虽然 Docker 能配合 firewalld 工作,但在初期调试时,为了避免 iptables 规则冲突导致排查困难,可以先临时关闭防火墙:

    systemctl stop firewalld
    systemctl disable firewalld

    注:生产环境建议保留防火墙,并手动添加 Docker 相关的 iptables 规则。


二、 安装 Docker Engine

推荐使用 Docker CE (Community Edition)。不要直接用 yum install docker 装那个老旧的版本,体验极差。

场景 A:CentOS 7 / CentOS Stream 8+ / Alibaba Cloud Linux

这是最常见的服务器环境。

  1. 卸载旧版本(如果有)

    sudo yum remove docker 
                      docker-client 
                      docker-client-latest 
                      docker-common 
                      docker-latest 
                      docker-logrotate 
                      docker-engine 
                      podman 
                      runc
  2. 安装依赖包

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  3. 设置 Docker 镜像仓库
    这里有个坑:不要用默认的官方仓库,下载速度会让你怀疑人生。建议使用阿里云提速器或者华为云/腾讯云的镜像源。

    以阿里云为例(需要先注册阿里云账号获取专属提速地址,或者直接去 Docker 官方文档 看最新命令):

    # 设置稳定的 yum 源
    sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  4. 安装 Docker CE

    sudo yum install -y docker-ce docker-ce-cli containerd.io
  5. 启动并设置开机自启

    sudo systemctl start docker
    sudo systemctl enable docker
  6. 验证安装

    docker version
    docker info
    docker run hello-world

    如果看到 Hello from Docker!,说明基础环境没问题。

场景 B:Ubuntu 20.04 / 22.04

# 更新 apt
sudo apt-get update

# 安装依赖
sudo apt-get install ca-certificates curl gnupg lsb-release

# 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 设置仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 启动
sudo systemctl start docker
sudo systemctl enable docker

三、 配置镜像提速(国内必做)

在国内服务器上,如果不配镜像提速,拉取 nginx, redis, mysql 等基础镜像可能会超时失败。

  1. 编辑 daemon.json

    sudo vi /etc/docker/daemon.json
  2. 填入以下内容(以阿里云为例,请替换为你自己的提速地址)

    {
      "registry-mirrors": [
        "https://<你的ID>.mirror.aliyuncs.com",
        "https://docker.m.daocloud.io",
        "https://huecker.io"
      ],
      "exec-opts": ["native.cgroupdriver=systemd"],
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "100m",
        "max-file": "3"
      }
    }

    注意:

    • registry-mirrors: 这里可以填多个,Docker 会依次尝试。
    • exec-opts: 强制使用 systemd 作为 cgroup driver,这与 Kubernetes 和许多现代编排工具保持一致,避免后续踩坑。
    • log-driver & log-opts: 限制日志大小,防止磁盘被 Docker 日志撑爆,这在云服务器上非常重要。
  3. 重启 Docker 服务

    sudo systemctl daemon-reload
    sudo systemctl restart docker
  4. 验证提速是否生效

    docker info | grep Registry

    你应该能看到你配置的 mirror 地址。


四、 权限优化(非 root 用户运行)

默认情况下,只有 root 用户可以执行 docker 命令。为了方便日常运维,可以将你的普通用户加入 docker 组。

# 创建 docker 组(如果不存在)
sudo groupadd docker

# 将当前用户加入 docker 组
sudo usermod -aG docker $USER

# 重新登录终端或执行以下命令使配置立即生效
newgrp docker

之后,你可以直接使用 docker ps 而不需要加 sudo。


五、 常见问题与避坑指南

  1. Kubernetes 兼容性
    如果你未来打算在京东云上部署 K8s 集群,务必在安装 Docker 时就指定 cgroupdriver=systemd(见上文 daemon.json 配置)。否则后期可能需要重装 Docker 或修改 K8s kubelet 配置,非常麻烦。

  2. 磁盘空间管理
    云服务器磁盘通常有限。定期清理无用的镜像和容器:

    # 清理所有停止的容器、未被使用的网络和悬空镜像
    docker system prune
    
    # 更彻底地清理(包括构建缓存)
    docker system prune -a

    建议在 crontab 里加一个定时任务,每周自动清理一次。

  3. 数据持久化
    永远不要把重要数据存在容器内部!一定要使用 Volume 或 Bind Mount。
    例如启动 MySQL:

    docker run -d --name mysql-db -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=yourpassword mysql:8.0

    这样即使容器删除重建,数据依然在 /data/mysql 目录下,对应京东云云盘的数据是安全的。

  4. 网络模式选择

    • bridge: 默认模式,适合单机多容器通信。
    • host: 性能最好,直接复用宿主机网络栈,但端口冲突风险高。
    • none: 无网络,适合纯计算节点。
      在京东云上,如果你的应用需要高并发且对网络延迟敏感,可以考虑使用 host 模式,但要注意端口规划。

总结

在京东云 ECS 上装 Docker,步骤并不复杂,重点在于:

  1. 选对镜像源(别用官方直连)。
  2. 配好 daemon.json(开启提速 + 设置 cgroupdriver + 限制日志)。
  3. 搞定安全组(放行业务端口)。

按照上述流程操作,基本不会遇到什么幺蛾子。如果遇到具体的报错信息,可以把错误日志贴出来,再针对性分析。