在阿里云 ECS(CentOS 系统,2核4G)上安装和配置 Docker,推荐使用 Docker 官方仓库(yum) 方式安装(稳定、安全、易于更新)。以下是详细、经过验证的步骤(适用于 CentOS 7/8,以 CentOS 7 为主;若为 CentOS 8,请注意 yum/dnf 差异,文末已补充说明):
✅ 前提确认
- 登录 ECS 实例(如通过 SSH):
ssh -i your-key.pem root@your-ecs-public-ip - 确认系统版本:
cat /etc/redhat-release # 示例输出:CentOS Linux release 7.9.2009 (Core)
⚠️ 注意:
- CentOS 7 是长期支持版本,Docker 官方支持良好;
- CentOS 8 已于 2021-12 停止维护,强烈建议升级到 CentOS Stream 8/9 或 Alibaba Cloud Linux 3(阿里云官方优化版,兼容性更好);
- 若使用 Alibaba Cloud Linux 3(推荐!),命令几乎完全一致,且内核对容器更友好。
🐳 一、安装 Docker(官方方式,推荐)
步骤 1:卸载旧版本(如有)
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 源(推荐使用阿里云镜像提速,更快更稳)
# 添加官方源(默认是 https://download.docker.com/linux/centos/)
sudo yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo
# 🔁 替换为阿里云镜像源(可选但推荐,解决国内网络慢问题)
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
步骤 4:安装 Docker CE(社区版)
# 列出可用版本(可选,查看最新稳定版)
yum list docker-ce --showduplicates | sort -r
# 安装最新稳定版(推荐)
sudo yum install -y docker-ce docker-ce-cli containerd.io
# ✅ 验证安装
docker --version # 应输出类似:Docker version 24.0.7, build afdd53b
⚙️ 二、配置与优化(关键!适配 ECS 2核4G)
步骤 1:启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker # ✅ 确认状态为 active (running)
步骤 2:配置 Docker 镜像提速器(必做!提升拉取速度)
阿里云用户可免费获取专属提速器地址(推荐):
- 登录 阿里云容器镜像服务控制台 → 左侧「镜像工具」→「镜像提速器」
- 复制你的专属提速地址(形如
https://xxxx.mirror.aliyuncs.com)
配置:
# 创建 daemon.json(若不存在)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
EOF
# 重载配置并重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
✅ 验证镜像提速生效:
docker info | grep "Registry Mirrors" -A 2
步骤 3:(可选但推荐)配置 cgroup 驱动(避免 k8s 兼容问题)
CentOS 7 默认使用 cgroupfs,而新版 Kubernetes 推荐 systemd。若后续部署 K8s,请执行:
# 查看当前驱动
docker info | grep "Cgroup Driver"
# 修改为 systemd(编辑 daemon.json)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
步骤 4:非 root 用户运行 Docker(安全最佳实践)
# 创建 docker 组(如不存在)
sudo groupadd docker
# 将当前用户(如 root 或普通用户)加入 docker 组
sudo usermod -aG docker $USER
# 生效组权限(需重新登录或执行)
newgrp docker # 当前会话立即生效(无需登出)
# ✅ 验证(无需 sudo)
docker run --rm hello-world
# 输出 "Hello from Docker!" 即成功 ✅
🧪 三、基础验证与常用命令
# 1. 运行测试容器
docker run -d -p 80:80 --name nginx-test nginx:alpine
# 2. 查看运行中容器
docker ps
# 3. 访问 ECS 公网 IP(浏览器打开 http://<ECS公网IP>),应看到 Nginx 欢迎页
# 4. 清理测试(可选)
docker stop nginx-test && docker rm nginx-test
📌 四、针对 2核4G ECS 的重要提醒
| 项目 | 建议 |
|---|---|
| 内存限制 | Docker 容器默认不限制内存,建议为生产容器设置 -m 2g --memory-swap=2g,防止 OOM 影响宿主机 |
| 磁盘空间 | ECS 系统盘默认 40GB,Docker 镜像/容器日志易占满。建议: • 使用 docker system prune -a 定期清理• 将 /var/lib/docker 挂载到独立数据盘(推荐,详见阿里云文档) |
| 防火墙 | CentOS 7 默认启用 firewalld,若容器端口无法访问:sudo firewall-cmd --permanent --add-port=80/tcp → sudo firewall-cmd --reload或临时关闭: sudo systemctl stop firewalld(仅测试环境) |
| 时间同步 | ECS 默认已配置 NTP,但容器内时间可能偏差,可在运行时加 --privileged 或挂载 /etc/localtime |
🆕 补充:CentOS 8 / Alibaba Cloud Linux 3 用户注意
- CentOS 8:
yum已被dnf取代,将上述yum命令替换为dnf即可(如dnf install docker-ce),其余步骤完全一致。 - Alibaba Cloud Linux 3(强烈推荐!):
✅ 阿里云深度优化,原生支持overlay2、cgroup v2、eBPF,性能更好;
✅ 安装方式相同,且预装了containerd和runc;
✅ 内核级安全加固,更适合生产容器环境。
💡 提示:新建 ECS 时,首选「Alibaba Cloud Linux 3」镜像(免费、高性能、长周期支持)。
✅ 完成!你现在已在阿里云 ECS(CentOS/Alinux)2核4G 实例上成功安装并优化了 Docker。
下一步可部署应用(如 Nginx、MySQL、WordPress)、搭建私有 Registry,或接入阿里云容器服务 ACK。
需要我为你生成 一键安装脚本、Nginx + PHP + MySQL 容器化部署方案,或 对接阿里云容器镜像服务(ACR) 的完整指南?欢迎随时告诉我 👇
云小栈