更新日期:2026-08-31
Alibaba Cloud Linux 4 已经不再沿用 Alibaba Cloud Linux 3 的容器安装思路。新系统基于 Anolis OS 23,使用 6.6 内核并默认采用 cgroup v2;阿里云原生提供、持续维护的容器引擎也从旧版本组件转向 Moby。如果只是需要 docker、dockerd、Docker API 和标准镜像,大多数 ECS 应优先安装 Moby,而不是先接入第三方 Docker CE 仓库。
本文翻新自本站 2022 年的 Alibaba Cloud Linux 3 教程。原 URL 保留,避免旧收藏和外链失效;正文已按 Alibaba Cloud Linux 4 的当前官方安装方式重写。
先给结论:Moby 还是 Docker CE
| 方案 | 适用场景 | 更新来源 | 注意事项 |
|---|---|---|---|
| Moby(推荐) | 新 ECS、普通 Web 服务、Compose 应用、希望跟随系统安全更新 | Alibaba Cloud Linux 4 官方软件源 | 命令、服务和 API 与标准 Docker 兼容 |
| Docker CE | 必须使用 Docker CE 指定版本,或已有严格依赖其 RPM 包名的交付流程 | Docker CE 的 CentOS 仓库 | Alibaba Cloud Linux 4 不再以兼容 CentOS 为设计目标,必须先在同规格测试机验证 |
| ACK 容器优化镜像 | Kubernetes 节点、规模化节点池 | ACK 与系统镜像生命周期 | 不应把单机 Docker 教程直接套到 ACK 节点 |
阿里云文档明确说明,Alibaba Cloud Linux 4 默认通过 moby 包提供容器引擎,安装后的 docker 命令、dockerd 服务、API 和容器镜像与标准 Docker 一致。除非业务确实要求 Docker CE,选择 Moby 可以少维护一套外部仓库和兼容版本。
Alibaba Cloud Linux 4 与 3 有什么不同
Alibaba Cloud Linux 3 基于 Anolis OS 8,旧教程需要 dnf-plugin-releasever-adapter 把第三方仓库的 $releasever 映射到兼容版本。Alibaba Cloud Linux 4 基于 Anolis OS 23,不再把“CentOS 兼容替代”作为目标,系统包后缀、核心工具链和默认容器组件都发生了变化。
与安装 Docker 直接相关的区别包括:
- 内核升级到 6.6,默认使用 cgroup v2。
- 默认容器引擎为 Moby,并提供 containerd 组件。
- 继续提供 dnf 和兼容的 yum 命令,但软件仓库结构已经更新。
- 旧的 dnf-plugin-releasever-adapter --repo alinux3-plus 不适用于 Alibaba Cloud Linux 4。
- Docker CE 官方没有把 Alibaba Cloud Linux 列为独立验证平台;使用其 CentOS RPM 属于兼容安装,不等于 Docker 官方原生支持该发行版。
截至本文更新日,Alibaba Cloud Linux 4.0.5 镜像已在 2026 年 8 月发布,包含 x86_64、ARM64 和容器优化版本。新建 ECS 时优先使用当前安全镜像;已有实例则应在维护窗口内安装系统更新并确认是否需要重启。
安装前先确认系统与现有数据
先确认机器确实运行 Alibaba Cloud Linux 4,而不是 Alibaba Cloud Linux 3、Anolis OS 或其他 RHEL 系发行版:
cat /etc/os-release
uname -r
uname -m
stat -fc %T /sys/fs/cgroup/
/etc/os-release 应显示 Alibaba Cloud Linux 4;stat 在默认配置下应返回 cgroup2fs。如果系统版本不同,请使用对应发行版的官方安装文档,不要强行执行本文的仓库替换命令。
再检查机器上是否已经存在容器运行时、数据和自定义仓库:
rpm -qa | grep -E '^(docker|moby|containerd|podman)' || true
sudo systemctl status docker --no-pager || true
sudo dnf repolist --enabled
sudo ls -ld /var/lib/docker /var/lib/containerd 2>/dev/null || true
如果这是正在运行业务的旧主机,不要直接卸载软件包。先记录并备份:
sudo docker ps -a
sudo docker image ls
sudo docker volume ls
sudo docker network ls
数据库应通过数据库自身的备份工具生成一致性备份;绑定挂载目录、named volume、Compose 文件、环境变量文件、/etc/docker/daemon.json 和 systemd override 都要纳入备份。ECS 系统盘快照可以作为额外保护,但不能代替数据库一致性备份。
方案一:安装系统原生 Moby(推荐)
新机器可以先刷新仓库元数据并查看待安装版本:
sudo dnf makecache
sudo dnf info moby
确认包来自 Alibaba Cloud Linux 4 官方仓库后安装:
sudo dnf install -y moby
sudo systemctl enable --now docker
安装完成后做四层验证:
docker --version
sudo docker version
sudo docker info
sudo systemctl is-enabled docker
sudo systemctl is-active docker
如果当前网络能够访问 Docker Hub,再运行一次临时测试容器:
sudo docker run --rm hello-world
国内线路拉取失败不等于引擎安装失败。先根据后文配置阿里云镜像加速器,再重试镜像拉取。
安装 Docker Compose 与 Buildx
现在应使用 Compose V2 插件,命令是 docker compose,不再建议下载旧版单文件后继续使用带连字符的 docker-compose。
先查看软件源能提供的插件版本:
sudo dnf info docker-compose-plugin docker-buildx-plugin
然后安装插件:
sudo dnf install -y docker-compose-plugin docker-buildx-plugin
docker compose version
docker buildx version
不要把 2022 年教程中的固定 Compose 版本号复制到新服务器。插件随软件仓库更新,更容易审计和升级,也不需要在 /usr/local/bin 手工维护来源不明的二进制文件。
方案二:确实需要时安装 Docker CE
只有在应用要求 Docker CE 的特定版本或 RPM 组件时,才建议走这条路线。Alibaba Cloud Linux 4 官方文档要求从 Docker CE 的 CentOS 仓库中选择 9 或 10 的仓库版本;Docker 官方当前也只把受维护的 CentOS Stream 9 和 10 列入支持范围。
这并不代表 Alibaba Cloud Linux 4 等同于 CentOS。阿里云已经明确说明,新系统不再以 CentOS 兼容替代为产品目标。因此应该先在与生产相同架构、镜像版本和安全策略的测试 ECS 上验证依赖解析、容器网络、存储驱动和重启恢复。
1. 排查冲突,不要直接删除数据
若机器已装 Moby 或另一套 Docker,请先完成前述备份。使用 --assumeno 只预览 DNF 将移除哪些包,命令会在事务确认处自动取消:
sudo dnf remove --assumeno \
docker \
moby \
docker-ce \
docker-ce-cli \
containerd.io \
docker-ce-rootless-extras \
docker-buildx-plugin \
docker-compose-plugin
确认事务不会误删业务依赖、备份可以恢复后,移除 --assumeno 并重新执行。卸载 RPM 默认不会清除 /var/lib/docker,但同一个数据目录跨引擎或跨版本直接复用并不是可靠的回滚方案;重要工作负载必须先验证备份和恢复。
2. 添加仓库并固定兼容版本
在阿里云 ECS 内可使用内网镜像地址:
sudo dnf install -y wget ca-certificates
sudo wget -O /etc/yum.repos.d/docker-ce.repo \
http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i \
's|https://mirrors.aliyun.com|http://mirrors.cloud.aliyuncs.com|g' \
/etc/yum.repos.d/docker-ce.repo
非阿里云服务器应使用 https://mirrors.aliyun.com,不要请求仅供阿里云内网使用的 mirrors.cloud.aliyuncs.com。
然后只选择一个兼容仓库版本。下面以 CentOS 9 仓库为例;若团队决定验证 CentOS 10,应把命令中的 9 改为 10,而不是连续执行两条替换命令:
sudo cp /etc/yum.repos.d/docker-ce.repo \
/etc/yum.repos.d/docker-ce.repo.before-releasever
sudo sed -i 's|$releasever|9|g' /etc/yum.repos.d/docker-ce.repo
sudo dnf clean all
sudo dnf makecache
sudo dnf list docker-ce --showduplicates
在安装前确认候选包架构与版本符合预期。生产环境建议把已验证的版本写入变更单,不要在所有节点无 canary 地追随 latest。
3. 安装并启动 Docker CE
sudo dnf install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
sudo systemctl enable --now docker
验证包来源、服务和插件:
rpm -qi docker-ce docker-ce-cli containerd.io
sudo docker version
sudo docker info
docker compose version
docker buildx version
Docker 仓库导入 GPG 密钥时,应核对 Docker 官方文档公布的指纹,不要对来源不明的密钥直接确认。
配置阿里云容器镜像加速器
阿里云为每个账号提供专属镜像加速地址。登录容器镜像服务控制台,在“镜像工具 → 镜像加速器”中复制自己的地址。不要把别人的专属地址写进公开脚本。
如果 /etc/docker/daemon.json 已经存在,先备份并合并字段,不要用重定向直接覆盖:
sudo install -d -m 0755 /etc/docker
sudo cp -a /etc/docker/daemon.json \
/etc/docker/daemon.json.before-mirror 2>/dev/null || true
sudoedit /etc/docker/daemon.json
配置结构如下,把示例字符串替换为控制台给出的专属地址:
{
"registry-mirrors": ["https://你的专属地址.mirror.aliyuncs.com"]
}
保存后先检查 JSON 语法,再在维护窗口重启 Docker:
python3 -m json.tool /etc/docker/daemon.json >/dev/null
sudo systemctl restart docker
sudo docker info
重启 docker 会影响正在运行的容器;是否自动恢复取决于 restart policy、应用状态和外部依赖。生产主机应先检查 docker inspect 中的重启策略,并在 canary 节点验证。
用 Compose 做一次最小验证
创建独立测试目录:
mkdir -p ~/docker-smoke-test
cd ~/docker-smoke-test
新建 compose.yaml:
services:
web:
image: nginx:alpine
ports:
- "127.0.0.1:8080:80"
restart: unless-stopped
然后启动并验证:
sudo docker compose config
sudo docker compose up -d
curl --fail http://127.0.0.1:8080/
sudo docker compose ps
sudo docker compose down
示例只监听本机回环地址,不会直接把 8080 端口暴露到公网。真实服务需要同时审查 Docker 端口映射、ECS 安全组、主机防火墙和应用鉴权,不能只依赖其中一层。
升级、切换和回滚
Moby 升级
先查看变更,再在维护窗口更新:
sudo dnf check-update moby docker-compose-plugin docker-buildx-plugin || true
sudo dnf update moby docker-compose-plugin docker-buildx-plugin
更新后检查 systemctl status docker、容器状态、日志、网络、卷挂载和应用探针。多节点服务应先升级 canary,再分批滚动。
Docker CE 升级
sudo dnf list docker-ce --showduplicates
sudo dnf check-update \
docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin || true
选定并验证目标版本后再安装,不要把仓库大版本从 9 改到 10 与 Docker Engine 升级合并为一次生产变更。
从 Docker CE 切回 Moby
先停止业务、备份并记录版本,然后移除 Docker CE 组件和对应仓库,再安装 Moby。切换前必须在测试机验证现有 /var/lib/docker 是否可被目标版本安全读取;无法确认时,应通过镜像仓库、Compose/配置文件和卷备份重建,而不是赌元数据向后兼容。
常见问题
releasever 导致仓库路径不存在
Alibaba Cloud Linux 4 的系统 release 不是 CentOS 的 9 或 10。Docker CE 路线必须按阿里云当前文档在仓库文件中选择兼容版本。不要重新安装 Alibaba Cloud Linux 3 的 releasever-adapter。
moby 与 docker-ce 冲突
两者都提供 Docker 服务及相关组件,不能在同一主机上当作两套独立引擎并排安装。先选择路线,再通过 dnf 查看冲突和替换事务。
Compose 命令不存在
先确认使用的是 docker compose version,不是旧命令 docker-compose。然后检查 docker-compose-plugin 是否已安装,以及插件是否来自当前启用的软件仓库。
容器在升级后无法启动
依次检查:
sudo systemctl status docker --no-pager
sudo journalctl -u docker -n 200 --no-pager
sudo docker ps -a
sudo docker info
重点核对 cgroup v2 兼容、存储空间、daemon.json 语法、镜像架构、端口冲突和 SELinux 日志。不要为了快速恢复就永久关闭 SELinux 或清空 Docker 数据目录。
普通用户执行 Docker 提示权限不足
将用户加入 docker 组通常可以免 sudo 使用 Docker,但该组基本等同于主机 root 权限。多人服务器不要把它当普通开发权限随意分配;优先通过受控运维入口、最小权限和审计管理生产容器。
上线检查清单
- 已确认系统为 Alibaba Cloud Linux 4,架构与内核符合预期。
- 已明确选择 Moby 或 Docker CE,没有混装组件。
- 生产数据、配置、卷和数据库已有可恢复备份。
- Docker CE 兼容路线已在同规格 canary 验证。
- Docker、containerd、Buildx 与 Compose 版本已记录。
- 镜像加速地址来自自己的阿里云账号,daemon.json 语法正确。
- 容器重启策略、端口映射、安全组和防火墙已复核。
- 升级后已验证服务状态、日志、存储卷、网络与应用探针。
- 已准备可执行的回滚或重建方案,而不是只写“卸载重装”。



