Loading...

文章背景图

Docker 加速配置指南

2026-07-09
20
-
- 分钟
|

在国内使用 Docker 时,镜像拉取慢、超时甚至完全失败是家常便饭。Docker Hub 对未登录用户有每 6 小时 100 次 pull 的限制,加上国内网络访问海外仓库的高延迟,让 docker pull 成了开发效率的杀手。本文从网络代理镜像站两个维度,提供完整的 Docker 加速配置方案。

一、网络代理方案

如果你的网络环境需要通过代理服务器访问外网(如企业内网),可以配置 Docker 守护进程使用代理。Docker 提供了两种配置方式,推荐使用 daemon.json 方式。

1.1 方式一:通过 daemon.json 配置(推荐)

Docker 从 23 版本开始支持在 daemon.json 中配置代理。编辑 /etc/docker/daemon.json 文件:

{
  "proxies": {
    "http-proxy": "http://proxy.example.com:3128",
    "https-proxy": "http://proxy.example.com:3128",
    "no-proxy": "*.test.example.com,.example.org,127.0.0.0/8"
  }
}

关键说明:即使配置的是 https-proxy,代理 URL 通常也使用 http:// 协议——因为客户端与代理服务器之间的连接本身是 HTTP,HTTPS 流量通过 CONNECT 方法隧道传输。

配置完成后重启 Docker 服务使配置生效:

sudo systemctl restart docker

1.2 方式二:通过 systemd 环境变量配置

对于使用 systemd 管理的 Docker 服务,可以创建 drop-in 文件设置环境变量:

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=http://proxy-server:8080"
Environment="HTTPS_PROXY=http://proxy-server:8080"
Environment="NO_PROXY=localhost,127.0.0.1,.internal"
EOF

然后重载并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

验证代理配置是否生效:

systemctl show --property=Environment docker | grep -i proxy

1.3 容器内代理配置

如果需要容器内运行的应用程序也使用代理,可以在启动容器时注入环境变量:

docker run -e HTTP_PROXY=http://proxy-server:8080 \
           -e HTTPS_PROXY=http://proxy-server:8080 \
           your-image

1.4 Docker Desktop 用户

如果你使用的是 Docker Desktop(macOS/Windows),上述 daemon.json 中的代理配置会被忽略。需通过 Docker Desktop 的图形界面设置:Settings → Proxies 中配置 HTTP/HTTPS 代理。

二、镜像站方案(镜像加速器)

镜像站方案通过配置 registry-mirrors,让 Docker 在拉取镜像时自动将请求转发到国内镜像仓库,从而大幅提升拉取速度。实测显示,配置镜像加速器可使镜像拉取速度提升 3-5 倍。

2.1 配置方法

编辑 /etc/docker/daemon.json 文件,添加 registry-mirrors 字段:

{
  "registry-mirrors": [
    "https://docker.xuanyuan.me",
    "https://docker.1ms.run",
    "https://docker.m.daocloud.io"
  ]
}

配置完成后重启 Docker:

sudo systemctl restart docker

验证镜像源配置是否生效:

docker info | grep -A 5 "Registry Mirrors"

正常输出应显示所有配置的镜像源地址。

2.2 2026 年实测可用的镜像源

⚠️ 注意:中科大(USTC)、网易、上海交大等镜像源在 2024–2025 年已陆续停服,老博客上的清单大多已过期,不要直接复制。

以下是 2026 年实测可用的镜像源:

镜像源

地址

说明

轩辕镜像

https://docker.xuanyuan.me

强烈推荐,全平台支持,NAS 友好,更新及时

毫秒镜像

https://docker.1ms.run

速度极快,多地实测可达 10MB/s+,无需账号

DaoCloud

https://docker.m.daocloud.io

国内最早的 Docker 镜像服务之一,稳定可靠

1Panel 社区

https://docker.1panel.live

公共可用

阿里云(专属)

https://<your-id>.mirror.aliyuncs.com

需注册阿里云,在容器镜像服务控制台获取专属地址

腾讯云(内网)

https://mirror.ccs.tencentyun.com

仅腾讯云 CVM 内网可用

配置建议:建议配置 2-3 个镜像源作为备用,避免单点故障。

2.3 Docker Desktop 用户

macOS/Windows 的 Docker Desktop 用户,在 Settings → Docker Engine 中编辑 JSON 配置即可。

三、镜像站信任配置(insecure-registries)

当你使用非 HTTPS 的镜像仓库(如内网自建的 HTTP Registry)或使用自签名证书的私有仓库时,Docker 默认会拒绝连接。此时需要配置 insecure-registries 让 Docker 信任这些仓库。

3.1 配置方法

编辑 /etc/docker/daemon.json,添加 insecure-registries 字段:

{
  "insecure-registries": ["192.168.1.100:5000"]
}

如果需要同时配置镜像加速和私有仓库信任,可以合并配置:

{
  "registry-mirrors": [
    "https://docker.xuanyuan.me",
    "https://docker.1ms.run"
  ],
  "insecure-registries": [
    "192.168.1.100:5000",
    "my-registry.internal:5000"
  ]
}

配置完成后重启 Docker:

sudo systemctl restart docker

验证配置是否生效:

docker info 2>/dev/null | grep -A5 "Insecure Registries"

3.2 安全注意事项

  • 仅限测试环境insecure-registries 允许通过 HTTP 协议访问非加密仓库,生产环境应优先使用 HTTPS

  • 不要使用 0.0.0.0/0:虽然配置 0.0.0.0/0 可以信任所有非 HTTPS 地址,但极度不安全,生产环境严禁使用。

  • 生产环境建议:给私有仓库配置合法的 TLS 证书,或使用自签名证书并导入 CA,而不是依赖 insecure-registries

四、总结

方案

适用场景

配置位置

网络代理

企业内网、需要代理访问外网的环境

daemon.jsonproxies 字段或 systemd 环境变量

镜像站加速

国内访问 Docker Hub 慢、超时、限流

daemon.jsonregistry-mirrors 字段

仓库信任

使用 HTTP 私有仓库或自签名证书仓库

daemon.jsoninsecure-registries 字段

三种方案可以组合使用。例如,在内网环境中可以同时配置代理和镜像站,让 Docker 通过代理访问国内镜像站,实现双重加速。

最后提醒:镜像源列表变化较快,建议定期关注社区最新实测结果,及时更新配置。

原创

Docker 加速配置指南

本文链接: Docker 加速配置指南

本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

文章目录