docker国内镜像源
作者:时尚 来源:综合 浏览: 【大 中 小】 发布时间:2026-10-17 06:04:17 评论数:
docker pull 卡在“Waiting”或者直接超时,国内这事我遇到过不下二十次。镜像尤其是国内刚装好 Docker 环境,满心欢喜想拉个 nginx 镜像,镜像结果进度条纹丝不动。国内国内直连 Docker Hub 的镜像体验,基本就是国内看运气。
解决办法其实就一句话:换镜像源。镜像但怎么换、国内换成哪个,镜像这里面门道不少。国内官方推荐的镜像 registry-1.docker.io 在国内访问极不稳定,而网上流传的国内各种加速器地址,很多已经失效或者需要登录。镜像我试过阿里云的国内、中科大的,还有几个个人维护的,最后稳定可用的就那么几个。
先说配置方法。Linux 下修改 /etc/docker/daemon.json,Windows 和 Mac 在 Docker Desktop 的设置里找 Docker Engine 选项。关键在于,改完必须重启 Docker 服务,否则配置不生效。命令是 systemctl restart docker,别漏了这一步。
至于源本身,我目前用的是一组组合配置:
{ "registry-mirrors": [ "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn" ] } daocloud 的镜像同步速度不错,dockerproxy.com 是社区维护的,偶尔会挂,但胜在地址多。中科大的老牌镜像站,稳定性优先。三个都写上,Docker 会按顺序尝试,一个失败自动切下一个。实测下来,拉取 ubuntu:latest 这种热门镜像,速度能跑到几 MB/s,比直连快了几十倍。
不过这里有个坑。某些镜像源只同步了热门仓库,冷门的比如你自己 push 到 Docker Hub 的私有镜像,很可能拉不下来。这时候要么换回官方源,要么用代理。另外,有些源已经停止服务了——比如早些年的 Azure 中国镜像,现在完全连不上。所以别照抄网上的老教程,最好自己 curl 一下测试。
测试方法很简单:curl -I https://你的镜像源地址/v2/,如果返回 200 或者 401(需要认证),说明源活着。如果超时或者 403,果断换一个。我见过不少人配了失效的源,然后 Docker 一直报错,还以为是自己的问题。
还有个细节。镜像源配置只影响 docker pull 和 docker run 时的拉取行为,不影响你已经下载到本地的镜像。如果你用 docker-compose 或者 Kubernetes,它们调用的还是 Docker daemon 的配置,所以改一处就行。但注意,如果你用的是 containerd 而不是 Docker(比如某些 K8s 环境),那得改 containerd 的配置文件,路径在 /etc/containerd/config.toml,里面的 registry.mirrors 段落单独设置。
最后说个主观看法:国内镜像源本质是“曲线救国”,治标不治本。如果你有稳定的代理,直接配置 HTTP_PROXY 走 Docker 的代理设置,体验反而更顺畅。镜像源的问题在于,你依赖的是第三方同步,同步不及时或者被墙了,照样抓瞎。我自己的做法是,日常开发用镜像源,遇到拉取失败就临时切回官方源加代理,两手准备。
反正,镜像源这东西,多备几个,轮询着用,总比卡死强。你配置好了之后,记得拉个镜像试试,别急着关终端。
