Docker Mirrors
为适配业务发展、优化镜像分发效率并简化运维,我们将原有Nexus私有镜像仓库,迁移至阿里云容器镜像服务ACR。 Nexus曾有效支撑我们的镜像存储与分发,但自托管模式运维成本较高,已难以满足业务需求。ACR作为托管式仓库,具备高效分发、低运维成本及完善的企业级特性,是此次迁移的最优选择。 迁移的核心需求的是平滑过渡:新镜像优先从ACR拉取,ACR中缺失的历史镜像自动 fallback 到Nexus,不中断研发流程、不影响日常操作。同时,考虑到后续灾备需求,我们调整了CI配置,新镜像将同步推送至Nexus和ACR,确保双仓库后续镜像一致性,提升系统容灾能力。 我们采用Docker Mirrors机制实现这一需求,通过配置Docker守护进程,无需修改开发命令配置,即可实现镜像拉取的自动切换,保障迁移稳定且降低业务影响。
# 一、Docker 镜像源配置(ACR 优先 + Nexus 兜底)
1.编辑 Docker 守护进程配置
cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://xxx-registry-vpc.cn-shanghai.cr.aliyuncs.com",
"https://nexushub.xxxx.com"
]
}
2.重启 Docker 使配置生效
systemctl daemon-reload
systemctl restart docker
3.验证配置是否生效
docker info | grep -C 5 "Registry Mirrors"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 二、Containerd配置
# 2.1 基础配置
# 1.创建 containerd 镜像加速目录
mkdir -p /etc/containerd/certs.d/docker.io
# 2.配置双镜像源:ACR 优先 + Nexus 兜底
cat /etc/containerd/certs.d/docker.io/hosts.toml
server = "https://docker.io"
[host."https://xxx-registry-vpc.cn-shanghai.cr.aliyuncs.com"]
capabilities = ["pull", "resolve", "push"]
[host."https://nexushub.xxxx.com"]
capabilities = ["pull", "resolve", "push"]
# 3.日志开启debug级别
cat /etc/containerd/config.toml
address = "/run/containerd/debug.sock"
uid = 0
gid = 0
level = "debug"
# 4.重启生效配置
systemctl daemon-reload
systemctl restart containerd
# 5.查看日志
journalctl -u containerd -n 100 --no-pager
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 2.2 ACK配置参考 (opens new window)

# 三、验证
docker pull xiaobuajiang/nginx:1.27
crictl pull xiaobuajiang/nginx:1.27
1
2
3
2
3
# 四、Tips
- 使使用 Terraform 升级 ACK 集群时,默认仅升级控制面板版本,不会自动升级节点 containerd。因此升级需分两步执行:
1.先通过 Terraform 升级集群控制面板
2.再单独升级节点 containerd 版本
- 新旧镜像仓库需保持命名空间(namespace)完全一致。
- ACK 环境建议统一使用 v3 版本 containerd,保障兼容性。
1
2
3
4
5
2
3
4
5
上次更新: 2026/05/31, 03:30:34