在京东云 ECS 上部署 Docker,核心逻辑其实和你在本地虚拟机或者阿里云、腾讯云上一模一样,毕竟底层都是 Linux。但既然你问的是“正确”安装和配置,我就不会只丢给你一行 yum install docker,因为那在生产环境里往往埋着坑。
我们要考虑的是稳定性、安全性、以及后续与京东云其他产品(如云硬盘、VPC)的联动。以下是我踩过坑后总结的一套标准流程,适用于大多数主流发行版(CentOS 7/8, Ubuntu 18.04/20.04, Debian 9+)。
第一步:系统准备与环境清理
很多新手直接开始装 Docker,结果发现端口冲突或内核模块缺失。
-
检查操作系统版本
确保你的 ECS 实例运行的是受支持的 Linux 版本。京东云控制台通常提供 CentOS 7.6+, Ubuntu 18.04+ 等镜像。如果用的是过老的 CentOS 6,建议直接换镜像,别折腾了。 -
卸载旧版本(如果有)
如果你之前尝试过安装,先清理干净,避免包冲突:sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine -
安装必要依赖
Docker 需要一些基础工具来管理存储驱动和网络:# CentOS/RHEL sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Ubuntu/Debian sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
第二步:配置 Docker 官方源(推荐)
不要直接用操作系统的默认源(apt/yum),那个版本太老,而且没有自动更新机制。使用官方源更稳定。
以 CentOS 为例:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
以 Ubuntu 为例:
curl -fsSL https://download.docker.com/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://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
然后更新索引并安装最新稳定版:
# CentOS
sudo yum makecache fast
sudo yum install -y docker-ce docker-ce-cli containerd.io
# Ubuntu
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
第三步:关键配置——daemon.json
这是最容易被忽略的一步。默认的 Docker 配置在国内访问 Docker Hub 极慢,甚至超时。你需要配置镜像提速器。
编辑 /etc/docker/daemon.json:
{
"registry-mirrors": [
"https://<你的京东云专属提速地址或公共提速地址>",
"https://mirror.ccs.tencentyun.com",
"https://docker.mirrors.ustc.edu.cn"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"storage-driver": "overlay2"
}
- 关于镜像源:京东云本身可能不提供直接的 Docker Hub XX,但你可以使用腾讯云的公共提速地址(CCS)或中科大镜像。如果公司内网有私有仓库,务必加上
--insecure-registry或配置 TLS。 - 关于 cgroupdriver:强烈建议设置为
systemd。因为 Kubernetes 和许多编排工具都期望 Docker 使用 systemd 作为 cgroup 驱动,否则会出现警告甚至启动失败。 - 日志轮转:生产环境必须限制日志大小,防止
/var/log撑爆磁盘。
第四步:启动服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
验证是否安装成功:
sudo docker run hello-world
如果能正常打印 Hello from Docker!,说明环境通了。
第五步:非 root 用户权限管理(安全最佳实践)
默认情况下,只有 root 用户能操作 Docker socket。为了安全,创建一个 docker 用户组,并将你的日常用户加入其中。
sudo groupadd docker
sudo usermod -aG docker $USER
注意:修改完用户组后,你需要注销并重新登录,或者重启 ECS 实例,才能使新组生效。
第六步:京东云 ECS 特有的注意事项
这部分是区分“通用教程”和“实战经验”的关键。
-
安全组规则(Security Group)
如果你在容器里跑了 Web 服务(比如 Nginx 80 端口,MySQL 3306 端口),务必去京东云控制台 -> 云服务器 -> 安全组,添加入方向规则。- 协议:TCP
- 端口:80, 3306 等
- 授权对象:0.0.0.0/0(测试用)或特定 IP
- 很多新手装好 Docker 发现网络访问不了,90% 是因为忘了开安全组,而不是 Docker 没配好。
-
磁盘性能与存储驱动
京东云 ECS 默认挂载的云盘通常是高效云盘或 SSD 云盘。Docker 默认使用overlay2存储驱动,性能很好。但如果你的业务对 IOPS 要求极高,建议在创建 ECS 时选择高性能 SSD 云盘,并在挂载数据盘时使用ext4或xfs文件系统,并确保挂载参数中包含noatime以提升性能。 -
Swap 分区问题
Docker 官方文档明确指出,在生产环境中应禁用 Swap。因为 Swap 会导致内存分页,影响容器性能。
检查 Swap:free -h如果有 Swap,建议关闭:
sudo swapoff -a # 同时注释掉 /etc/fstab 中的 swap 行,防止重启后恢复同时,需要在
daemon.json中显式允许使用 Swap(虽然不推荐,但某些老旧内核可能需要):{ "fail-swap-on": false } -
网络模式选择
- bridge(默认):适合单机部署,简单隔离。
- host:性能最好,无网络开销,但端口容易冲突。适合对延迟敏感的场景(如游戏服务器、高频交易)。
- none:完全无网络,适合内部计算节点。
- 在京东云上,如果你的 ECS 加入了 VPC,建议使用
bridge模式,并通过-p映射端口到宿主机 IP,这样可以通过 VPC 内的负载均衡器轻松接入流量。
常见问题排查
-
Q:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
A: 检查systemctl status docker。如果状态是 failed,查看日志journalctl -xeu docker。常见原因是daemon.json格式错误,或者磁盘空间满了。 -
Q: 拉取镜像特别慢
A: 确认daemon.json中的镜像提速器地址是否有效。可以尝试切换不同的公共提速器。如果还是慢,考虑构建自己的私有镜像仓库(Harbor),放在同一 VPC 内,走内网传输,速度飞快。 -
Q: 容器内无法访问网络
A: 检查 ECS 的安全组出方向规则是否放行所有流量(默认通常是放行的)。检查 Docker 的网络桥接是否正常:brctl show或ip link。
总结
在京东云 ECS 上装 Docker,步骤并不复杂,但细节决定成败。记住三个核心点:
- 源要选对的(官方源 + 国内镜像提速)。
- 配置要规范的(systemd cgroup + 日志轮转 + 禁用 Swap)。
- 网络要通顺的(安全组 + VPC 路由)。
按照这个流程走,你的 Docker 环境就能稳定支撑起大部分互联网应用的需求。如果有具体的业务场景(比如跑 K8s 集群、微服务架构),可以再深入讨论 Compose 或 Swarm 的编排方案。
云技术博客