在京东云服务器(ECS)上安装 Docker 时,可能会遇到多种错误。以下是最常见的错误、原因分析及解决方法,按优先级和常见程度分类整理:
🔧 一、权限不足 / 非 root 用户操作
❌ 错误现象
$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: ...
✅ 解决方法
-
临时使用 sudo:
$ sudo docker ps -
永久解决(推荐):将当前用户加入
docker组$ sudo usermod -aG docker $USER $ newgrp docker # 或重新登录使生效 -
验证:
$ docker ps
⚠️ 注意:不要随意修改
/var/run/docker.sock权限为777,存在安全风险。
📦 二、Docker 服务未启动或启动失败
❌ 错误现象
$ systemctl status docker
● docker.service - Docker Application Container Engine
Active: failed (Result: exit-code) since ...
✅ 解决方法
1. 查看详细日志
$ journalctl -u docker.service --no-pager -n 50
2. 常见子问题及修复
a) 磁盘空间不足
$ df -h /var/lib/docker
- 清理无用镜像/容器:
$ docker system prune -a --volumes - 扩展云盘容量(通过京东云控制台操作)
b) 配置文件错误(daemon.json)
检查 /etc/docker/daemon.json 格式是否正确(JSON 严格语法):
{
"registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"],
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
修复后重启:
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
c) 内核模块缺失(如 overlay2)
$ modprobe overlay
$ lsmod | grep overlay
若缺失,尝试:
$ sudo yum install kernel-modules-extra # CentOS/RHEL
$ sudo apt install linux-modules-extra-$(uname -r) # Ubuntu/Debian
🌐 三、网络相关错误
❌ 错误现象
$ docker pull hello-world
Unable to find image 'hello-world:latest' locally
pull access denied, repository does not exist or may require authorization
✅ 解决方法
1. 配置国内镜像提速器
编辑 /etc/docker/daemon.json:
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://huecker.io",
"https://dockerhub.timeweb.cloud"
]
}
重启 Docker:
$ sudo systemctl restart docker
2. 检查 DNS 解析
$ nslookup registry-1.docker.io
若解析失败,修改 /etc/resolv.conf 或使用公网 DNS:
nameserver 8.8.8.8
nameserver 114.114.114.114
3. 安全组/防火墙拦截
- 登录京东云控制台 → 安全组规则 → 确保出站允许 HTTPS(443)端口。
- 本地服务器检查防火墙:
$ sudo firewall-cmd --list-all # firewalld $ sudo ufw status # ufw
🐧 四、操作系统兼容性问题
❌ 错误现象
$ docker version
Client:
Version: 20.10.7
...
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
✅ 解决方法
1. 确认系统版本支持
Docker 官方支持:
- Ubuntu ≥ 18.04
- Debian ≥ 9
- CentOS ≥ 7 / RHEL ≥ 7
- Amazon Linux 2+
老旧系统(如 CentOS 6、Ubuntu 16.04)需升级或使用旧版 Docker CE。
2. 内核版本过低
Docker 要求 Linux 内核 ≥ 3.10(建议 ≥ 4.4)。
$ uname -r
若版本过低,考虑升级内核或更换 ECS 实例规格。
3. 虚拟化环境限制
某些轻量级 ECS 实例可能禁用部分内核功能。联系京东云技术支持确认是否支持容器化运行。
🔒 五、SELinux / AppArmor 冲突
❌ 错误现象
$ docker run hello-world
error setting up libnetwork endpoint: iptables failed: ... Permission denied
✅ 解决方法
CentOS/RHEL(SELinux)
$ getenforce
# 若为 Enforcing,临时设为 Permissive 测试:
$ sudo setenforce 0
# 永久关闭(不推荐生产环境):
$ sudo sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
$ sudo reboot
Ubuntu/Debian(AppArmor)
通常无需干预,但若报错:
$ sudo aa-status
$ sudo apt install apparmor-utils
🔄 六、多版本 Docker 冲突
❌ 错误现象
$ docker --version
Docker version 18.09.0, build 4d60db4
# 但实际想使用最新社区版
✅ 解决方法
-
卸载旧版 Docker
$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine -
重新安装最新版 Docker CE
$ sudo yum install -y yum-utils $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo $ sudo yum install -y docker-ce docker-ce-cli containerd.io $ sudo systemctl start docker $ sudo systemctl enable docker
🛡️ 七、京东云特有注意事项
| 项目 | 说明 |
|---|---|
| 实例类型 | 推荐使用通用型或计算型实例,避免使用基础型(可能资源受限) |
| 磁盘类型 | SSD 云盘性能更好,适合 Docker 存储驱动 |
| 安全组 | 确保开放所需端口(如 2375 仅内网使用,禁止公网暴露) |
| 快照备份 | 安装前创建系统盘快照,便于回滚 |
| 监控告警 | 启用京东云监控,关注 CPU、内存、磁盘 I/O 指标 |
✅ 最佳实践建议
- 始终使用官方脚本或 YUM/APT 仓库安装,避免手动编译。
- 定期更新 Docker 和内核。
- 使用
containerd作为运行时,提升稳定性。 - 生产环境禁用自动重启策略,避免容器无限重启消耗资源。
- 使用
.dockerignore优化构建上下文。 - 启用 Docker 日志轮转,防止磁盘写满。
📞 仍无法解决?
-
收集以下信息提交京东云工单:
- 系统版本:
cat /etc/os-release - 内核版本:
uname -a - Docker 版本:
docker version - 完整错误日志:
journalctl -u docker.service -n 100 --no-pager - 网络连通性测试:
curl -I https://registry-1.docker.io
- 系统版本:
-
参考官方文档:
- Docker 官方安装指南
- 京东云 ECS 用户指南
通过以上步骤,绝大多数 Docker 安装问题均可解决。如遇特殊场景,欢迎提供具体错误日志进一步分析。
轻量云Cloud