Docker 中国镜像加速器:详细教程 – wiki大全

Docker 中国镜像加速器:详细教程

1. 为什么需要 Docker 中国镜像加速器?

对于身处中国大陆的用户而言,由于网络环境的特殊性(例如防火墙限制),直接从 Docker Hub 拉取(docker pull)镜像通常会遇到速度缓慢、连接中断甚至完全无法访问的问题。Docker 中国镜像加速器应运而生,它通过将 Docker Hub 的流量重定向到国内的服务器,极大地提高了镜像的拉取速度和稳定性,有效解决了这一痛点。

当你配置了 Docker 镜像加速器后,你的 Docker 守护进程(Daemon)将不再直接连接 Docker Hub,而是转而从指定的镜像站点拉取镜像。这些镜像站点通常由国内的云服务提供商、高校或第三方服务商维护,它们会将 Docker Hub 上的镜像缓存到国内服务器,从而为用户提供更快速、更可靠的服务。

2. 常用中国镜像提供商

为了增强镜像拉取的稳定性和冗余性,建议配置多个镜像地址。以下是一些常用的 Docker 中国镜像提供商:

  • 阿里云(Alibaba Cloud):通常需要登录阿里云控制台,在其容器镜像服务中获取个人专属的镜像加速器地址。
  • 腾讯云(Tencent Cloud)https://mirror.ccs.tencentyun.com
  • 中国科学技术大学 (USTC)https://docker.mirrors.ustc.edu.cn/
  • DaoCloudhttps://docker.m.daocloud.io (具体地址可能因用户而异,例如 https://f1361db2.m.daocloud.io)
  • 网易云(NetEase Cloud)https://hub-mirror.c.163.com (曾非常流行,但近期部分用户反映可能存在不稳定或不可用的情况)
  • 百度智能云(Baidu Cloud)https://mirror.baidubce.com
  • Azure 中国https://dockerhub.azk8s.cn
  • 玄元镜像https://docker.xuanyuan.me

3. 配置 Docker 守护进程

配置 Docker 镜像加速器主要是修改 Docker 守护进程的配置文件 daemon.json。具体步骤因操作系统而异。

3.1. Linux 系统 (使用 systemd)

  1. 检查现有配置 (可选)
    在修改 daemon.json 之前,可以先检查 docker.service 文件中是否已通过 --registry-mirror 参数配置了镜像:
    bash
    systemctl cat docker | grep '\-\-registry\-mirror'

    如果此命令有输出,建议先编辑 docker.service 文件,移除 --registry-mirror 参数,以便统一通过 daemon.json 进行管理。如果无输出,则可以直接修改 daemon.json

  2. 创建或编辑 daemon.json 文件
    打开或创建 /etc/docker/daemon.json 文件:
    bash
    sudo nano /etc/docker/daemon.json

    添加 registry-mirrors 键,并填入你选择的镜像加速器地址。为了增加可靠性,建议配置多个地址。

    示例 daemon.json 内容:
    json
    {
    "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn/",
    "https://mirror.ccs.tencentyun.com",
    "https://docker.m.daocloud.io"
    ]
    }

    请确保 JSON 格式正确,否则 Docker 服务可能无法启动。

  3. 重新加载并重启 Docker 服务
    保存 daemon.json 文件后,重新加载 systemd 守护进程并重启 Docker 服务,使配置生效:
    bash
    sudo systemctl daemon-reload
    sudo systemctl restart docker

3.2. Windows / macOS (Docker Desktop)

对于 Windows 10 或 macOS 用户,通过 Docker Desktop 应用程序可以方便地配置镜像加速器。

  1. 打开 Docker Desktop 设置

    • Windows:右键点击系统托盘中的 Docker 图标,选择 “Settings” (或 “Preferences”)。
    • macOS:点击菜单栏中的 Docker Desktop 图标,选择 “Preferences”。
  2. 导航到 Docker Engine
    在设置窗口的左侧导航栏中,选择 “Docker Engine”。这将打开一个 JSON 格式的配置编辑器。

  3. 修改 JSON 配置
    在 JSON 配置中添加或修改 registry-mirrors 字段。如果已有其他配置,请确保在添加 registry-mirrors 时使用逗号分隔,保持 JSON 格式的有效性。

    示例配置:
    json
    {
    "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn/",
    "https://mirror.ccs.tencentyun.com"
    ],
    "experimental": false, // 其他已有的配置保持不变
    "debug": true
    }

  4. 应用并重启
    点击 “Apply & Restart” (通常位于右下角) 按钮,保存更改并重启 Docker Desktop,使配置生效。

4. 验证配置

配置并重启 Docker 后,可以通过运行 docker info 命令来验证镜像加速器是否已成功启用:

bash
docker info

在输出信息中,查找类似以下内容的 “Registry Mirrors” 部分:

Registry Mirrors:
https://docker.mirrors.ustc.edu.cn/
https://mirror.ccs.tencentyun.com

如果能看到你所配置的镜像地址,说明配置已成功生效。

5. 重要注意事项与故障排除

  • 镜像可靠性:中国的镜像站点有时可能不稳定或在未通知的情况下更换地址。如果发现拉取镜像再次变慢,请尝试更新 daemon.json 文件,使用其他或最新的镜像地址。
  • 多镜像配置:建议配置 2-4 个镜像地址。如果其中一个镜像失效或速度变慢,Docker 可以尝试使用其他配置的镜像。
  • 镜像更新时效性:部分镜像可能不会及时同步 Docker Hub 的最新内容,这可能导致在拉取最新标签(latest tag)的镜像时遇到问题。
  • 私有仓库:镜像加速器主要针对 Docker Hub 上的公共镜像。对于私有仓库(例如 gcr.ioquay.io)的镜像拉取,镜像加速器通常无效。在这种情况下,可以考虑以下方案:
    • daemon.json 中配置 HTTP 代理。
    • 使用可靠的 VPN 服务。
    • 在中国附近区域(例如 AWS 香港或新加坡)部署自建的私有仓库(如 Harbor)来缓存镜像。
    • 寻找社区维护的针对特定私有仓库(如 gcr.io)的代理服务。
  • 出国旅行准备:如果你计划前往中国大陆,并且需要使用 Docker,建议提前将所需的 Docker 镜像下载并保存到本地,以避免对镜像加速器或 VPN 的依赖。
滚动至顶部