Docker镜像拉取失败主因是网络链路中断,需单独配置dockerd:先用curl和dig验证registry连通性与DNS解析,再配置国内镜像源(如docker.m.daocloud.io)、公共DNS(8.8.8.8)或专用代理(通过http-proxy.conf),最后重启服务生效。

拉取失败大多不是 Docker 本身的问题,而是网络链路中某个环节断了。核心要搞清:Docker 守护进程(dockerd)独立运行,它不认你终端里的代理、DNS 或防火墙规则,得单独给它配。
先确认是不是网络连不通
别急着改配置,先验证基础连通性:
- 运行 curl -v https://registry-1.docker.io/v2/ —— 看是否返回 HTTP 200;如果卡住或报错 connection refused,说明根本没连上官方 registry
- 执行 dig registry-1.docker.io —— 检查 DNS 是否能正常解析出 IP;若无结果或超时,就是 DNS 层出问题
- 用 ping registry-1.docker.io 辅助判断,但注意有些环境禁 ping,不能单靠它下结论
换国内镜像源是最快见效的一步
国内直连 registry-1.docker.io 延迟高、易中断,加速源本质是代理缓存,优先走就近节点。注意两点:它不替代 DNS,也不绕过防火墙,只优化下载路径。
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
- 编辑 /etc/docker/daemon.json,填入至少两个可靠地址,例如:
{"registry-mirrors": ["https://docker.m.daocloud.io", "https://docker.1ms.run"]} - 保存后执行 sudo systemctl daemon-reload && sudo systemctl restart docker
- 验证是否生效:运行 docker info | grep -A 1 "Registry Mirrors",看到地址即表示已加载
DNS 解析异常就绕开系统默认
Docker 守护进程默认用宿主机的 127.0.0.53(systemd-resolved)或 127.0.0.1,这些在某些网络下不稳定。直接指定公共 DNS 更可靠。
- 在 /etc/docker/daemon.json 里加一行:
"dns": ["8.8.8.8", "1.1.1.1"] - 同样 reload + restart docker
- 避免改 /etc/resolv.conf,因为该文件可能被网络管理器覆盖,对 dockerd 也无效
需要走代理就得专配给守护进程
你在 shell 里设的 HTTP_PROXY 环境变量,dockerd 根本看不到。必须显式告诉它:
- 创建目录:sudo mkdir -p /etc/systemd/system/docker.service.d
- 新建文件 /etc/systemd/system/docker.service.d/http-proxy.conf,写入:
[Service]
Environment="HTTP_PROXY=http://your-proxy:port"
Environment="HTTPS_PROXY=http://your-proxy:port"
Environment="NO_PROXY=localhost,127.0.0.1,.local" - 执行 sudo systemctl daemon-reload && sudo systemctl restart docker

















