3. 配置镜像加速器:主流云厂商加速器配置
容器镜像拉取速度直接影响应用部署效率,尤其在首次部署或大规模扩缩容场景下,从 Docker Hub 等公共仓库拉取镜像可能因网络瓶颈导致分钟级延迟。配置镜像加速器是成本最低、见效最快的优化手段。本节覆盖阿里云、腾讯云、华为云、DaoCloud 四家主流加速器的配置方法,并说明 Docker Daemon 的修改与重启流程。
适用场景: 所有使用 Docker 或 containerd 作为容器运行时的 Kubernetes 节点。加速器仅对配置节点生效,集群中每个节点均需独立配置。
3.1 主流云厂商加速器地址与对比
各云厂商提供的加速器服务均基于反向代理与缓存机制,将用户请求转发至目标仓库并缓存镜像层。下表列出四家加速器的默认地址、适用区域及特点:
| 厂商 | 加速器地址(HTTPS) | 适用区域 | 特点 |
|---|---|---|---|
| 阿里云 | https://<your-code>.mirror.aliyuncs.com |
中国大陆 | 需登录容器镜像服务控制台获取专属地址;支持 Docker Hub、Google Container Registry 等主流仓库 |
| 腾讯云 | https://mirror.ccs.tencentyun.com |
中国大陆 | 腾讯云容器服务默认集成;无需额外注册,直接使用 |
| 华为云 | https://<your-region>-docker.mirror.swr.myhuaweicloud.com |
中国大陆 | 需在 SWR 服务中获取区域专属地址;支持跨区域同步 |
| DaoCloud | https://docker.m.daocloud.io |
全球 | 公共加速器,无需注册;支持 Docker Hub、Quay.io、GitHub Container Registry |
注意: 阿里云与华为云的加速器地址包含用户专属或区域专属字段,不可直接复制使用。请登录对应云厂商控制台获取完整地址。
3.2 Docker Daemon 配置修改与重启
Docker 守护进程(dockerd)通过配置文件 /etc/docker/daemon.json 读取镜像加速器设置。修改后需重新加载配置并重启服务。以下为通用配置步骤:
- 编辑配置文件:使用
sudo vim /etc/docker/daemon.json,若文件不存在则新建。 - 写入加速器配置:在 JSON 中添加
registry-mirrors字段,可配置多个加速器地址。 - 重新加载配置:
sudo systemctl daemon-reload - 重启 Docker 服务:
sudo systemctl restart docker - 验证配置生效:
docker info | grep -A 5 "Registry Mirrors"
以下为配置单加速器与多加速器的代码示例:
# 单加速器配置(以 DaoCloud 为例)
{
"registry-mirrors": ["https://docker.m.daocloud.io"]
}
# 多加速器配置(阿里云 + DaoCloud 兜底)
{
"registry-mirrors": [
"https://xxxx.mirror.aliyuncs.com",
"https://docker.m.daocloud.io"
]
}
# 验证命令输出示例
$ docker info | grep -A 5 "Registry Mirrors"
Registry Mirrors:
https://docker.m.daocloud.io/
https://xxxx.mirror.aliyuncs.com/
最佳实践: 建议配置至少两个加速器地址,主加速器使用云厂商专属地址,备选使用 DaoCloud 公共地址。当主加速器不可用时,Docker 会自动切换至备选地址,避免拉取中断。
3.3 各厂商专属配置要点
不同云厂商的加速器在获取方式与配置细节上存在差异,以下逐一说明:
- 阿里云:登录容器镜像服务控制台 → 镜像中心 → 镜像加速器,复制专属地址。地址格式为
https://<12位随机码>.mirror.aliyuncs.com。 - 腾讯云:无需注册,直接使用
https://mirror.ccs.tencentyun.com。若使用腾讯云 Kubernetes 服务(TKE),节点默认已配置该加速器。 - 华为云:登录 SWR 控制台 → 总览 → 获取加速器地址。地址格式为
https://<区域>-docker.mirror.swr.myhuaweicloud.com,例如https://cn-north-4-docker.mirror.swr.myhuaweicloud.com。 - DaoCloud:公共加速器,地址固定为
https://docker.m.daocloud.io。支持 Docker Hub、Quay.io、gcr.io、ghcr.io 等常见仓库。
3.4 镜像拉取加速流程示意图
下图展示从 Docker 客户端发起拉取请求到加速器缓存命中的完整流程:
3.5 配置验证与故障排查
配置完成后,建议执行以下验证步骤确保加速器正常工作:
| 验证项 | 命令 | 预期结果 |
|---|---|---|
| 检查加速器列表 | docker info | grep -A 5 "Registry Mirrors" |
显示已配置的加速器地址 |
| 测试拉取速度 | time docker pull nginx:latest |
首次拉取时间明显缩短(通常 <30s) |
| 验证缓存效果 | 再次执行 time docker pull nginx:latest |
第二次拉取时间 <5s(缓存命中) |
| 检查日志 | sudo journalctl -u docker --since "5 min ago" |
无连接超时或证书错误日志 |
常见问题: 若配置后拉取仍慢或报错,请检查:① 加速器地址是否包含协议头
https://;② 云厂商专属地址是否已替换为实际值;③ 节点能否访问加速器域名(curl -I https://docker.m.daocloud.io);④ Docker 服务是否已重启。
3.6 多加速器优先级与故障转移
当配置多个加速器时,Docker 会按 registry-mirrors 列表顺序依次尝试。若第一个加速器返回错误或超时,自动切换至下一个。以下为推荐配置策略:
- 主加速器:选择与节点同区域的云厂商加速器,延迟最低。
- 备选加速器:使用 DaoCloud 公共加速器作为兜底,覆盖全球节点。
- 回源策略:所有加速器均不可用时,Docker 直接回源至目标仓库(如 Docker Hub)。
以下为多加速器配置的完整 JSON 示例:
{
"registry-mirrors": [
"https://xxxx.mirror.aliyuncs.com",
"https://docker.m.daocloud.io"
],
"insecure-registries": [],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
生产建议: 在 Kubernetes 集群中,建议通过 DaemonSet 或节点初始化脚本统一配置所有节点的 daemon.json,避免手动逐台修改。配置变更后需滚动重启节点上的 Docker 服务,确保集群内所有节点使用一致的加速器配置。