在阿里云 ECS(2核4G,推荐 CentOS 7/8 或 Ubuntu 20.04+/22.04)上正确安装 Docker,需遵循官方推荐方式(避免使用系统自带过旧的 docker 包),并兼顾生产环境稳定性与安全性。以下是分步、安全、可复现的安装指南(以 CentOS 7/8 和 Ubuntu 22.04 为例,二者选一即可):
✅ 前提检查(所有系统必做)
# 1. 确保系统已更新
sudo yum update -y # CentOS/RHEL
# 或
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian
# 2. 检查内核版本(Docker 要求 ≥ 3.10,ECS 默认满足)
uname -r # 应显示如 4.18.0-305.el8.x86_64 或 5.15.0-xx-generic
# 3. 确认已启用 cgroups v1(CentOS 7/8 默认支持;Ubuntu 22.04 默认 cgroups v2,但 Docker 24+ 已原生支持,无需降级)
# ✅ 无需手动切换 cgroups(除非运行老版 Docker < 23.0,当前推荐安装最新稳定版)
🐳 方式一:推荐 —— 使用 Docker 官方仓库安装(最稳定、及时更新)
▶️ 对于 CentOS 7/8(阿里云默认镜像多为 CentOS 7/8)
# 1. 卸载可能存在的旧版 Docker(如有)
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 2. 安装必要依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 3. 添加 Docker 官方 yum 源(使用阿里云镜像提速,更快更稳)
sudo yum-config-manager
--add-repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4. 清理缓存并生成元数据(重要!否则可能报错)
sudo yum makecache
# 5. 安装最新稳定版 Docker CE(自动安装 containerd、runc 等依赖)
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 6. 启动并设为开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 7. 验证安装
sudo docker version
sudo docker run --rm hello-world # 首次运行会拉取镜像并输出欢迎信息
✅ 说明:
- 使用
https://mirrors.aliyun.com/docker-ce/是阿里云官方镜像源,国内访问极快;docker-ce-cli和containerd.io是必需组件,不可省略;- 不建议用
yum install docker(那是旧版docker包,已废弃且不兼容新版生态)。
▶️ 对于 Ubuntu 22.04(或 20.04)
# 1. 卸载旧版(如有)
sudo apt remove docker docker-engine docker.io containerd runc
# 2. 安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
# 3. 添加 Docker 官方 GPG 密钥(使用阿里云镜像源)
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 4. 添加稳定版仓库(阿里云镜像)
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
# 5. 更新包索引并安装
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 6. 启动并开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 7. 验证
sudo docker version
sudo docker run --rm hello-world
💡 提示:
docker-buildx-plugin和docker-compose-plugin是现代 Docker 推荐的插件化 Compose(替代旧docker-compose),开箱即用。
🔐 生产增强配置(强烈建议,尤其 2核4G ECS)
# 1. 将当前用户加入 docker 组(避免每次 sudo)
sudo usermod -aG docker $USER
# ⚠️ 执行后需重新登录 SSH 或运行:newgrp docker
# 2. 配置 Docker 镜像提速器(大幅提升国内拉取速度)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://<your-registry-mirror>.mirror.aliyuncs.com", // 替换为你的阿里云容器镜像服务提速器地址
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
EOF
# 3. 重载配置并重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
# ✅ 验证提速器生效:
sudo docker info | grep "Registry Mirrors" -A 2
🔑 如何获取专属提速器?
登录 阿里云容器镜像服务 ACR → 左侧「镜像工具」→ 「镜像提速器」→ 复制https://xxxx.mirror.aliyuncs.com地址(免费,限阿里云账号)。
🧪 验证与基础测试(确保一切正常)
# 查看 Docker 状态
sudo systemctl status docker
# 查看资源占用(2核4G 下应轻量)
docker info | grep -E "(CPUs|Total Memory|Storage Driver)"
# 运行一个轻量容器测试网络和存储
sudo docker run -d --name nginx-test -p 8080:80 nginx:alpine
curl -I http://localhost:8080 # 应返回 200 OK
sudo docker stop nginx-test && sudo docker rm nginx-test
❌ 常见错误规避
| 问题 | 原因 | 解决 |
|---|---|---|
Cannot connect to the Docker daemon |
用户未加 docker 组 或 daemon 未启动 |
sudo systemctl start docker + sudo usermod -aG docker $USER + 重登 |
Failed to download metadata for repo 'docker-ce-stable' |
CentOS 8 EOL 或源配置错误 | 改用 centos/7 源(即使系统是 CentOS 8 Stream)或升级到 CentOS Stream 9/AlmaLinux 8+ |
docker: command not found |
PATH 未包含 /usr/bin(极罕见) |
sudo ln -s /usr/bin/docker /usr/local/bin/docker 或检查 shell profile |
✅ 最终建议(针对 2核4G ECS)
- ✅ 内存管理:Docker 默认不限制容器内存,建议对生产容器加
--memory=2g --memory-swap=2g防止 OOM; - ✅ 日志轮转:已通过
daemon.json配置,防止/var/lib/docker/containers/日志撑爆磁盘; - ✅ 定期清理:添加定时任务清理无用镜像/容器(可选):
# 每周清理(加入 crontab -e) 0 2 * * 0 /usr/bin/docker system prune -af --volumes
✅ 完成!你现在拥有一套符合阿里云最佳实践、国内提速、安全可控的 Docker 环境,可直接部署应用、Kubernetes 节点(kubeadm)、或 Docker Compose 项目。
需要我为你生成一键安装脚本(含镜像提速器自动获取)、或部署 Nginx/MySQL 示例、或配置 Docker + Nginx 反向?欢迎继续提问 👇
CLOUD技术笔记