阿里云 Ubuntu 服务器安装 Docker 完整教程(2026 版)
在阿里云 ECS Ubuntu 上配置 Docker CE 软件源,安装 Docker Engine 与 Compose,验证容器运行,并排查软件源和镜像拉取问题。
文章目录
一、前言
Docker 是一种开源容器技术,可以将应用程序及其依赖打包成容器,方便部署、迁移和维护。
在阿里云 ECS 服务器上使用 Docker,可以快速部署 Nginx、MySQL、Redis、Java、Python、Node.js 等服务。
不过,国内服务器安装 Docker 时,可能遇到以下问题:
curl: (35) Recv failure: Connection reset by peer
Package docker-ce is not available
E: Package 'docker-ce' has no installation candidate
E: Unable to locate package containerd.io
这些问题通常与 Docker 官方软件源访问受限、APT 软件源配置错误或软件包索引未成功更新有关。
本教程采用阿里云提供的 Docker CE 软件包镜像源,并介绍安装、验证、镜像加速、Docker Compose 以及常见问题的解决方法。
二、环境准备
2.1 服务器环境
| 项目 | 说明 |
|---|---|
| 云服务商 | 阿里云 ECS |
| 操作系统 | Ubuntu 22.04 / 24.04 LTS |
| CPU 架构 | x86_64 / ARM64 |
| 登录方式 | SSH |
| 操作用户 | root 或拥有 sudo 权限的用户 |
| 安装软件 | Docker Engine + Docker Compose V2 |
本教程命令统一在 root Shell 中执行。普通 Ubuntu 用户请先执行 sudo -i 进入 root Shell,再按顺序操作;完成后使用 exit 退出。仅在 cat > 文件 前添加 sudo 不会提升重定向写入的权限。
2.2 连接服务器
可以通过阿里云控制台的远程连接功能,或通过本地终端连接:
ssh root@服务器公网IP
成功连接后,查看系统版本:
cat /etc/os-release
查看 CPU 架构:
dpkg --print-architecture
查看当前内核:
uname -r
常见 Ubuntu 版本代号:
| Ubuntu 版本 | 代号 |
|---|---|
| 22.04 LTS | jammy |
| 24.04 LTS | noble |
后续配置软件源时,会自动读取系统版本代号,无需手动修改。
三、更新 Ubuntu 软件包
首先更新软件包索引:
apt update
安装必要工具:
apt install -y \
ca-certificates \
curl \
gnupg
这些工具主要用于 HTTPS 证书验证、下载文件和管理 Docker 软件源的签名密钥。
如需升级系统软件包,可以在确认业务兼容性后执行:
apt upgrade -y
系统升级不是安装 Docker 的必需步骤。对于已经运行生产业务的服务器,建议先做好快照或备份。
四、检查并处理旧版 Docker
如果服务器是刚购买的全新 Ubuntu 系统,可以直接进入下一步。
如果已经安装过 Docker,先检查:
docker --version
dpkg -l | grep -E 'docker|containerd|runc'
Ubuntu 自带的 docker.io、旧版 docker-compose 等软件包可能与 Docker 官方 CE 软件包发生冲突。
对于确认不再需要的旧版安装,可以按官方建议卸载冲突的软件包。
注意:如果服务器已经运行 Docker 业务,请先备份和评估影响,不要直接执行卸载操作。
卸载冲突软件包:
for pkg in docker.io docker-compose docker-compose-v2 \
docker-doc docker-buildx podman-docker \
containerd runc; do
apt remove -y "$pkg"
done
这里不会主动删除 /var/lib/docker 中存储的数据。
不要随意执行:
rm -rf /var/lib/docker
该操作可能导致已有镜像、容器及数据卷丢失。
五、配置阿里云 Docker 软件源
这是国内阿里云 ECS 安装 Docker 最关键的一步。
5.1 为什么不直接使用 Docker 官方源?
Docker 官方软件源为:
https://download.docker.com/linux/ubuntu
在部分中国内地服务器上,访问该域名时可能出现连接超时、连接被重置等情况。
例如:
curl: (35) Recv failure: Connection reset by peer
因此,阿里云 ECS 可以优先使用阿里云官方文档提供的 Docker CE 软件包镜像源:
http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu
该地址主要面向阿里云网络环境,不保证其他云服务商或所有网络环境均可访问。
5.2 清理之前失败的软件源配置
如果之前反复尝试过配置 Docker 软件源,建议先备份旧配置。
mkdir -p /root/docker-apt-backup
备份可能存在的 Docker 源配置:
mv /etc/apt/sources.list.d/docker.list \
/root/docker-apt-backup/ 2>/dev/null || true
mv /etc/apt/sources.list.d/docker.sources \
/root/docker-apt-backup/ 2>/dev/null || true
注意检查 /etc/apt/sources.list.d/ 目录中是否还有其他重复的 Docker 软件源文件,避免产生冲突。
5.3 创建 GPG 密钥目录
install -m 0755 -d /etc/apt/keyrings
5.4 下载 Docker GPG 密钥
先下载密钥文件:
curl -fSL \
http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu/gpg \
-o /tmp/docker-ce.gpg
确认文件下载成功后,导入密钥:
gpg --batch --yes --dearmor \
-o /etc/apt/keyrings/docker.gpg \
/tmp/docker-ce.gpg
修改读取权限:
chmod a+r /etc/apt/keyrings/docker.gpg
完成后删除临时文件:
rm -f /tmp/docker-ce.gpg
安全说明: 上述 HTTP 地址来自阿里云 ECS 官方安装说明。APT 会使用指定的 GPG 密钥验证软件包仓库元数据,但通过 HTTP 首次获取密钥本身没有 TLS 传输保护。对于安全要求较高的环境,应优先使用可正常访问的 HTTPS 地址,并核验密钥指纹。
5.5 自动识别 Ubuntu 版本和 CPU 架构
执行:
ARCH=$(dpkg --print-architecture)
DISTRO=$(. /etc/os-release && echo "$VERSION_CODENAME")
查看识别结果:
echo "$ARCH"
echo "$DISTRO"
例如 Ubuntu 24.04 AMD64 服务器:
amd64
noble
5.6 添加 Docker APT 软件源
执行:
cat > /etc/apt/sources.list.d/docker.list <<EOF
deb [arch=${ARCH} signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu ${DISTRO} stable
EOF
查看是否配置成功:
cat /etc/apt/sources.list.d/docker.list
Ubuntu 24.04 的输出一般类似:
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu noble stable
5.7 更新 Docker 软件包索引
执行:
apt update
注意检查输出是否存在以下错误:
Failed to fetch
404 Not Found
NO_PUBKEY
如果有上述错误,应该先修复软件源问题,不要直接继续安装 Docker。
检查 Docker 是否存在候选安装版本:
apt-cache policy docker-ce
正常情况下应该能看到:
docker-ce:
Installed: (none)
Candidate: 5:...
Version table:
...
其中 Candidate 必须是可安装版本。
如果显示:
Candidate: (none)
说明 APT 尚未获得可用的软件包索引,或者当前系统架构、版本没有匹配的软件包。
六、安装 Docker Engine 和 Docker Compose
确认软件源配置成功后,执行:
apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
安装的软件包说明:
| 软件包 | 功能 |
|---|---|
| docker-ce | Docker 容器引擎 |
| docker-ce-cli | Docker 命令行工具 |
| containerd.io | 容器运行时 |
| docker-buildx-plugin | Docker 镜像构建插件 |
| docker-compose-plugin | Docker Compose V2 插件 |
安装完成后,如果系统出现:
Running kernel seems to be up-to-date.
No services need to be restarted.
No containers need to be restarted.
这是 Ubuntu 软件包安装过程中常见的系统检查提示,不是错误。
但是该提示本身并不能证明 Docker 安装成功,还需要执行后面的验证步骤。
七、启动 Docker 服务
启动 Docker:
systemctl start docker
设置开机自动启动:
systemctl enable docker
也可以合并为一条命令:
systemctl enable --now docker
检查运行状态:
systemctl status docker
正常情况下可以看到:
Active: active (running)
如需退出状态界面,按 q。
也可以直接执行:
systemctl is-active docker
正常输出:
active
八、验证 Docker 安装
8.1 查看 Docker 版本
docker --version
成功后会显示已安装的 Docker Engine 版本。
8.2 查看 Docker Compose 版本
docker compose version
注意,Docker Compose V2 使用:
docker compose
而不是旧版的:
docker-compose
8.3 查看 Docker 详细信息
docker info
该命令可以查看:
- Docker 服务端版本
- 存储驱动
- CPU 数量
- 内存容量
- 镜像及容器统计
- Docker Root Dir
- Registry Mirrors
8.4 运行测试容器
执行:
docker run --rm hello-world
如果镜像能够正常拉取,并出现:
Hello from Docker!
说明 Docker 已经具备基本的容器运行能力。
如果命令提示无法访问 Docker Hub,不一定代表安装失败,也可能是国内网络无法正常拉取镜像。
九、配置 Docker 镜像加速
需要区分两个概念:
Docker 软件包镜像源: 用于通过 APT 安装和更新 Docker Engine。
Docker 容器镜像加速器: 用于加速拉取 Nginx、Redis、MySQL 等容器镜像。
二者不是一回事。
9.1 获取阿里云镜像加速地址
进入阿里云容器镜像服务 ACR 控制台:
https://cr.console.aliyun.com/
找到:
镜像工具
└── 镜像加速器
查看当前账号对应的镜像加速器地址。
需要注意:阿里云官方已说明 ACR 镜像加速服务停止同步最新镜像,因此可能出现镜像不存在或版本不是最新的问题。该加速服务仅面向个人开发场景,不允许再次封装或商业用途,且加速地址仅支持阿里云 ECS 访问,不能将其视为生产环境稳定获取所有 Docker Hub 镜像的保证。
生产环境更建议使用经过验证的企业镜像仓库,或通过 ACR 制品订阅等机制管理所需镜像。
9.2 配置 daemon.json
如果确认账号拥有可用的加速地址,编辑配置:
mkdir -p /etc/docker
nano /etc/docker/daemon.json
如果系统没有 nano:
apt install -y nano
对于尚未存在 daemon.json 的新服务器,可以填写:
{
"registry-mirrors": [
"https://你的专属镜像加速地址"
]
}
将示例地址替换成 ACR 控制台中实际获取的地址。
如果文件已经存在,需要在现有 JSON 对象中合并 registry-mirrors 字段,不要直接覆盖原有配置。
9.3 验证 JSON 格式
python3 -m json.tool /etc/docker/daemon.json
确认没有 JSON 语法错误。
9.4 重启 Docker
修改配置后执行:
systemctl restart docker
检查镜像加速设置:
docker info
查看输出中的 Registry Mirrors。
注意:重启 Docker 服务可能影响运行中的容器,请在生产环境安排合适的维护窗口。
十、使用 Docker 部署 Nginx
为了验证 Docker 能否实际运行 Web 服务,可以使用 Nginx 进行测试。
10.1 拉取镜像
docker pull nginx:stable
首次拉取需要访问容器镜像仓库。
如果出现超时,请先排查镜像仓库的网络连通性。
10.2 创建并运行容器
docker run -d \
--name nginx-test \
--restart unless-stopped \
-p 8080:80 \
nginx:stable
参数解释:
| 参数 | 说明 |
|---|---|
| -d | 后台运行 |
| --name | 设置容器名称 |
| --restart unless-stopped | 设置重启策略 |
| -p 8080:80 | 将服务器 8080 端口映射到容器 80 端口 |
10.3 查看运行状态
docker ps
可以查看正在运行的容器。
10.4 本机访问测试
curl http://127.0.0.1:8080
如果返回 Nginx 欢迎页面的 HTML,说明容器 Web 服务已经运行。
10.5 公网访问
如果需要通过浏览器访问:
http://服务器公网IP:8080
需要在阿里云 ECS 安全组中按需添加 TCP 8080 入站规则。
生产环境建议只开放必要端口,并限制访问来源,不要无差别开放管理和数据库端口。
另外,Docker 发布容器端口时可能绕过部分 UFW 防火墙规则,因此不要只依赖 UFW 控制容器对外访问。
十一、使用 Docker Compose 部署服务
Docker Compose 可以通过 YAML 文件统一管理多个容器。
安装 docker-compose-plugin 后,无需额外下载独立的 Compose 程序。
11.1 创建项目目录
mkdir -p /opt/docker-demo
cd /opt/docker-demo
11.2 创建 Compose 配置
nano compose.yaml
写入:
services:
nginx:
image: nginx:stable
container_name: nginx-compose
ports:
- "127.0.0.1:8081:80"
restart: unless-stopped
这里将端口绑定在 127.0.0.1,仅允许服务器本机访问,适合做安全的基础测试。
11.3 启动服务
docker compose up -d
11.4 查看服务状态
docker compose ps
11.5 查看日志
docker compose logs -f
按 Ctrl + C 退出日志查看,不会停止容器。
11.6 测试访问
curl http://127.0.0.1:8081
11.7 停止服务
docker compose down
注意:该命令会停止并移除本项目的容器和默认网络。不要随意添加 -v,否则可能删除项目管理的数据卷。
十二、Docker 常用命令
12.1 容器操作
查看运行中的容器:
docker ps
查看所有容器:
docker ps -a
启动容器:
docker start nginx-test
停止容器:
docker stop nginx-test
重启容器:
docker restart nginx-test
查看容器日志:
docker logs -f nginx-test
进入容器:
docker exec -it nginx-test /bin/sh
删除容器:
docker rm nginx-test
12.2 镜像操作
查看本地镜像:
docker images
拉取镜像:
docker pull nginx:stable
删除镜像:
docker rmi nginx:stable
12.3 查看资源占用
docker stats
查看 Docker 磁盘使用:
docker system df
十三、常见问题及解决方案
问题一:curl 连接被重置
错误:
curl: (35) Recv failure: Connection reset by peer
可能原因:
- 官方下载站网络不通
- 网络中间设备重置连接
- 代理或防火墙配置异常
- TLS 连接建立失败
解决方法:
先测试目标站点:
curl -I --connect-timeout 5 \
https://download.docker.com
对于阿里云 ECS,可以测试其 Docker 软件包镜像源:
curl -I --connect-timeout 5 \
http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu/gpg
如果镜像源可访问,可以根据本教程第五章重新配置 Docker CE 软件源。
如果无法访问阿里云内网镜像,也可以尝试阿里云公网 HTTPS 镜像地址:
https://mirrors.aliyun.com/docker-ce/linux/ubuntu
切换时需要同步修改 GPG 密钥下载地址和 APT 软件源地址。
问题二:docker-ce 没有安装候选版本
错误:
Package docker-ce is not available
E: Package 'docker-ce' has no installation candidate
首先检查:
cat /etc/apt/sources.list.d/docker.list
然后执行:
apt update
检查:
apt-cache policy docker-ce
如果仍为:
Candidate: (none)
需要检查:
- Ubuntu 版本代号是否正确。
- CPU 架构是否匹配。
- APT 是否成功下载仓库索引。
- 是否存在重复或冲突的软件源。
- 相关镜像仓库是否提供当前系统版本的安装包。
不建议在软件源未正常工作时反复执行 apt install。
问题三:找不到 containerd.io
错误:
E: Unable to locate package containerd.io
通常表示 Docker CE 软件源没有被正常加载。
执行:
apt-cache policy containerd.io
如果没有候选版本,应优先修复软件源。
问题四:Docker 服务无法启动
错误:
Failed to start docker.service
检查服务状态:
systemctl status docker --no-pager
查看最近日志:
journalctl -u docker -n 100 --no-pager
常见原因包括:
- daemon.json 格式错误
- containerd 无法启动
- 系统网络或存储配置异常
- Docker 配置参数不兼容
不要在未查看日志的情况下删除 /var/lib/docker。
问题五:Cannot connect to the Docker daemon
错误:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock
先检查:
systemctl is-active docker
如果服务未启动:
systemctl start docker
如果普通用户无权限访问 Docker Socket,可以按实际需求配置 Docker 用户组。
注意:加入 docker 组的用户通常可以获得等同于 root 的高权限,仅应授予可信用户。
问题六:Docker Hub 镜像拉取超时
错误:
Get "https://registry-1.docker.io/v2/":
i/o timeout
解决思路:
- 检查服务器出站网络
- 检查 DNS 解析
- 检查 Docker Hub 可达性
- 使用经过验证的镜像仓库
- 配置可用的镜像加速服务
- 对生产所需镜像进行固定版本和内部仓库管理
问题七:安装后出现内核更新提示
提示:
Running kernel seems to be up-to-date.
No services need to be restarted.
No containers need to be restarted.
这是系统更新检查结果,并非 Docker 错误。
继续验证:
docker --version
docker compose version
systemctl is-active docker
以实际命令结果判断安装是否成功。
十四、生产环境建议
在阿里云 ECS 上正式使用 Docker 时,建议遵循以下原则:
- 限制安全组端口: 默认仅开放必要的 SSH、HTTP 和 HTTPS 端口。
- 不要暴露 Docker API: 禁止将未加保护的 Docker 守护进程接口开放至公网。
- 配置容器重启策略: 根据业务要求使用
unless-stopped等策略。 - 使用固定镜像版本: 生产环境避免无控制地使用
latest。 - 做好数据持久化: 数据库和重要文件应使用数据卷或其他持久化存储。
- 定期备份: 重要业务结合阿里云云盘快照及应用级备份进行保护。
- 监控日志和磁盘空间: 防止容器日志和旧镜像长期堆积。
- 谨慎升级 Docker: 生产环境应先验证兼容性,再执行升级。
对于已经上线的业务,更新镜像、重启 Docker 和清理数据前都应确认影响范围。
十五、安装完成后的检查清单
完成部署后,建议依次执行:
# 查看 Ubuntu 系统版本
cat /etc/os-release
# 查看 Docker 版本
docker --version
# 查看 Compose 版本
docker compose version
# 查看 Docker 服务状态
systemctl is-active docker
# 查看容器
docker ps
# 查看本地镜像
docker images
# 查看磁盘占用
docker system df
# 查看 Docker 详细信息
docker info
最终确认以下结果:
- ☐ Docker Engine 已成功安装
- ☐ Docker Compose V2 可以正常运行
- ☐ Docker 服务状态为 active
- ☐ Docker 已设置开机自启
- ☐ Docker 软件包源能够正常更新
- ☐ 可以成功获取所需容器镜像
- ☐ 可以启动和管理容器
- ☐ 阿里云安全组已按业务需求配置
十六、总结
阿里云 Ubuntu 服务器安装 Docker,核心步骤可以概括为:
更新系统 → 配置 Docker 软件源 → 更新 APT 索引 → 检查安装候选版本 → 安装 Docker → 启动服务 → 验证容器 → 按需配置镜像仓库。
其中最容易出问题的部分不是 Docker 本身,而是中国内地服务器访问 Docker 官方软件源和 Docker Hub 的网络环境。
对于阿里云 ECS,采用阿里云官方说明中的 Docker CE 软件包镜像源,可以作为官方仓库访问异常时的替代方案。
最终应以软件包安装状态、Docker 服务运行状态以及实际容器运行结果,判断整个部署是否成功。
参考文档
- Docker 官方 Ubuntu 安装指南 https://docs.docker.com/engine/install/ubuntu/
- 阿里云 ECS:在 Linux 上安装 Docker 和 Docker Compose https://help.aliyun.com/zh/ecs/user-guide/install-and-use-docker
- 阿里云 ACR:配置镜像加速器 https://help.aliyun.com/zh/acr/user-guide/accelerate-the-pulls-of-docker-official-images
文档更新日期:2026 年 10 月 14 日。