目前配置 Docker 国内镜像加速器最稳妥的方式,是登录云厂商控制台获取专属加速地址,再写入 Docker 守护进程配置文件中。
先说结论:通过修改 daemon.json 配置 registry-mirrors 字段生效,不要直接复制网上过期的公共地址。
- 适合:所有 Linux、Windows 及 macOS 上的 Docker 环境
- 先准备:阿里云或腾讯云账号,用于控制台获取专属加速链接
- 验收:执行 docker info 确认 Registry Mirrors 字段已更新
命令速用版
如果你已经拿到了专属加速地址,可以直接参考以下命令修改配置并重启服务。
# 1. 编辑配置文件(Linux 默认路径)
sudo vim /etc/docker/daemon.json
# 2. 写入以下内容(注意替换为你的实际地址)
{
"registry-mirrors": ["https://你的专属地址.mirror.aliyuncs.com"]
}
# 3. 重载配置并重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker为什么会这样
Docker 官方镜像仓库服务器主要位于海外,国内直接拉取时会经历较长的网络链路,导致 HTTPS 握手慢、传输中断或超时。国内云厂商提供的镜像加速器本质是在国内部署了 Registry 缓存节点,通过配置 Docker 守护进程,让拉取请求优先指向国内节点,从而减少网络延迟。
过去网上流传的一些公共加速地址(如某些通用域名)近期因合规和安全策略调整,可用性变得不稳定,部分已停止服务。因此,使用云厂商控制台生成的、与账号绑定的专属加速地址成功率更高。
分步处理
第一步:获取加速地址
登录阿里云容器镜像服务控制台或腾讯云容器服务控制台。在镜像加速器页面,系统会生成一个专属的 URL。该地址通常包含你的账号标识,不要随意分享给他人。
第二步:修改配置文件
在 Linux 系统中,配置文件通常位于/etc/docker/daemon.json。如果文件不存在,新建即可。注意 JSON 格式必须严格正确,键值对之间用逗号分隔,末尾不能有逗号。
Windows 或 macOS 用户需在 Docker Desktop 设置界面的 Docker Engine 选项卡中填入相同的 JSON 配置。
第三步:重启服务
修改配置后必须重启 Docker 服务才能生效。Linux 下使用systemctl restart docker。如果重启失败,请检查journalctl -u docker.service查看日志,常见原因是 JSON 语法错误。
怎么验证是否生效
执行以下命令查看 Docker 系统信息,找到Registry Mirrors字段。
docker info | grep -A 5 "Registry Mirrors"如果输出中包含了你配置的加速地址,说明配置已加载。接着尝试拉取一个常用镜像测试速度。
docker pull hello-world观察下载过程中的速度波动,国内节点通常能跑满本地带宽,且不会出现长时间停滞。
常见坑
1. JSON 语法错误:配置文件中多一个逗号或少一个引号都会导致 Docker 无法启动。修改前建议备份原文件。
2. 未重启服务:修改配置后直接拉取镜像,发现还是慢,是因为守护进程未重载配置。
3. 地址失效:部分免费加速地址可能有有效期或访问频率限制,如果突然变慢,需回到控制台确认地址状态。
4. HTTPS 要求:Docker 要求镜像仓库地址必须支持 HTTPS,配置 HTTP 地址会被拒绝,除非在 insecure-registries 中额外声明,但不建议这样做。
参考来源
- 阿里云容器镜像服务文档,产品页帮助信息,https://help.aliyun.com/product/28009.html
- 腾讯云容器服务文档,产品介绍页,https://cloud.tencent.com/document/product/382
- Docker 官方文档,Configure the Docker daemon,https://docs.docker.com/engine/daemon/