docker pull命令拉取镜像失败的办理方案

[复制链接]
发表于 2026-10-6 12:56:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

docker pull 拉到一半突然断掉,报 error pulling image configuration,后面跟一串 dial tcp 88.191.249.182:443: i/o timeout。这个 IP 是 Docker Hub 的 CDN 节点,超时基本就是出国链路问题,而不是镜像本身坏了。本文给出改镜像加速器重启 Docker 的完整做法,以及改完仍不行的兜底手段。

一、先看报错里透露了什么

典型输出:

[root@host docker]# docker pull mysql:5.7
5.7: Pulling from library/mysql
20e4dcae4c69: Pulling fs layer
1c56c3d4ce74: Pulling fs layer
...
error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/...:
dial tcp 88.191.249.182:443: i/o timeout

注意它已经 Pulling fs layer 拉了一阵才失败,说明是拉取 middle layer 之后去取 configuration blob 时连不上 production.cloudflare.docker.com。国内网络环境下这个域名时好时坏,时好时坏就意味着你要么重试碰运气,要么换路径。

二、给 Docker 配镜像加速器

Docker 支持在 daemon 里配置一组 registry-mirrors,pull 时会优先尝试这些国内镜像站。编辑配置文件:

vim /etc/docker/daemon.json

写入(JSON 格式,注意是双引号、末尾逗号别多:

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://docker.ckyl.me",
    "https://mirror.baidubce.com"
  ]
}

配置完让 daemon 重新读配置、重启 Docker:

systemctl daemon-reload
systemctl restart docker

重启之后先验证一下配置生效没:

docker info | grep -A3 Registry Mirrors
docker pull mysql:5.7

能正常拉下来就结束了。

三、如果镜像站也连不上

  • 挑一两个用:加速器列表里同时挂十几个反而可能每个都在超时,先留两三个稳定的。
  • 换个源:很多镜像站已经下线(比如某些老牌的 registry.docker-cn.com 已经不稳),优先用当前还在维护的。
  • 离线导入:在一台能正常 pull 的机器上把镜像 docker save 成 tar,拷到目标机 docker load,内网环境最稳。
  • 换走代理:如果服务器本身有可用的 HTTP 代理,在 daemon.json 里配 "proxies" 段的 http-proxy / https-proxy 比镜像站更彻底。

四、顺手带上的两个坑

  • 改 daemon.json 后 daemon-reload 之前如果 JSON 写错了,Docker 会直接起不来。改之前先备份一份:cp /etc/docker/daemon.json /etc/docker/daemon.json.bak,起不来就还原再 daemon-reload。
  • 配置加速器属于「治标」,Registry 的不稳定是外部因素。对生产环境,更建议把常用基础镜像自己 push 到内网仓库(Harbor 或 registry:2),以后 pull 都走内网,彻底不受公网影响。
  • 拉到一半失败的镜像会留下 dangling 的中间层,磁盘会慢慢涨,清理用 docker image prune(小心别把正在用的删了)。

五、排障顺序总结

看报错域名 → 确认是不是镜像仓库节点超时 → 配 registry-mirrors → daemon-reload + restart → docker info 确认生效 → 重试 pull。三步之内还不行就走离线导入或内网仓库。把这套顺序记住,以后 pull 超时不用再满世界搜。

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表