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 读取镜像加速器设置。修改后需重新加载配置并重启服务。以下为通用配置步骤:

  1. 编辑配置文件:使用 sudo vim /etc/docker/daemon.json,若文件不存在则新建。
  2. 写入加速器配置:在 JSON 中添加 registry-mirrors 字段,可配置多个加速器地址。
  3. 重新加载配置:sudo systemctl daemon-reload
  4. 重启 Docker 服务:sudo systemctl restart docker
  5. 验证配置生效: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 客户端发起拉取请求到加速器缓存命中的完整流程:

镜像拉取加速流程 镜像拉取加速流程 Docker 客户端 daemon.json registry-mirrors 镜像加速器集群 缓存命中? 返回缓存镜像 回源拉取并缓存 是 否 镜像层数据返回 说明:Docker 客户端根据 daemon.json 中的 registry-mirrors 列表依次尝试加速器,缓存命中则直接返回,否则回源拉取并缓存

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 服务,确保集群内所有节点使用一致的加速器配置。