拉取llama 3镜像卡在“pulling from”并超时,主因是代理配置错误干扰docker守护进程直连;需依次清除systemd代理文件、删除~/.docker/config.json中proxies字段、覆盖环境变量禁用代理、直连ip验证网络、精简daemon.json镜像源并重启服务。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您尝试拉取Llama 3的Docker镜像,但命令卡在“Pulling from”阶段并最终报错提示连接超时,则很可能是网络代理配置错误干扰了Docker守护进程的直连能力。以下是针对该问题的多种修复路径:
一、验证并清除Docker守护进程的残留代理配置
Docker守护进程不继承终端环境变量,若曾手动配置过HTTP_PROXY/HTTPS_PROXY,或通过systemd服务文件注入代理,而当前网络已无需代理,则会导致请求被错误转发至不可达地址,引发超时。
1、检查Docker是否加载了代理配置:
执行命令 docker system info | grep -i proxy,若输出非空,说明代理已启用。
2、定位代理配置来源:
查看 /etc/systemd/system/docker.service.d/http-proxy.conf 文件是否存在;若存在,用 cat /etc/systemd/system/docker.service.d/http-proxy.conf 查看内容。
3、移除代理配置:
执行 sudo rm -f /etc/systemd/system/docker.service.d/http-proxy.conf;随后运行 sudo systemctl daemon-reload。
4、重启Docker服务:
执行 sudo systemctl restart docker。
二、检查并重置用户级Docker CLI配置中的代理设置
Docker CLI(即客户端)可能通过 ~/.docker/config.json 中的 "proxies" 字段强制指定代理,该设置会覆盖系统级配置,且在无网络代理需求时造成直连失败。
1、打开用户Docker配置文件:
执行 nano ~/.docker/config.json(或使用其他编辑器)。
2、查找是否存在 "proxies" 键及其子对象;若存在,整段删除(包括键名与对应的大括号块)。
3、保存文件并退出编辑器。
4、验证修改生效:
执行 docker info | grep -A 5 "HTTP Proxy",确认输出中不再显示代理信息。
三、强制禁用Docker守护进程所有代理继承行为
即使未显式配置代理,某些Linux发行版的systemd默认会从/etc/environment或/etc/default/docker读取代理变量。为彻底隔离,需在守护进程启动参数中显式清空代理环境。
1、创建覆盖配置目录:
执行 sudo mkdir -p /etc/systemd/system/docker.service.d。
2、写入空代理覆盖文件:
执行 sudo tee /etc/systemd/system/docker.service.d/no-proxy.conf 。
3、重载并重启服务:
执行 sudo systemctl daemon-reload && sudo systemctl restart docker。
4、确认环境变量已被清空:
执行 sudo systemctl show --property=Environment docker | grep -E "(HTTP|HTTPS)_PROXY",输出应为空行。
四、测试直连能力并绕过DNS解析干扰
代理配置错误常伴随DNS解析异常,导致registry-1.docker.io域名无法正确解析。此步骤跳过DNS,直接验证与镜像源IP的HTTPS连通性,排除代理与DNS双重故障叠加。
1、获取registry-1.docker.io当前IP:
执行 dig +short registry-1.docker.io | head -1,记下返回的IPv4地址(如104.18.126.25)。
2、使用curl直连测试:
执行 curl -I --connect-timeout 10 -k https://
3、若返回HTTP 200或401,说明直连通道正常;若超时或拒绝连接,则问题仍存在于底层网络或防火墙策略。
4、临时添加hosts映射强化解析稳定性:
执行 echo "
五、切换至无代理上下文下的镜像源验证
在确认代理已完全禁用后,仍需验证国内镜像源是否被正确调用。若daemon.json中配置了多个镜像源,而首个源不可用,Docker可能回退至官方源并再次触发代理路径。
1、检查当前生效的镜像源列表:
执行 docker info | grep -A 10 "Registry Mirrors",确认输出中包含您配置的国内地址(如https://docker.m.daocloud.io)。
2、临时精简daemon.json仅保留一个高可用源:
编辑 /etc/docker/daemon.json,将registry-mirrors数组改为单元素,例如:
{"registry-mirrors": ["https://docker.m.daocloud.io"]}。
3、重载并重启Docker:
执行 sudo systemctl daemon-reload && sudo systemctl restart docker。
4、立即测试基础镜像拉取:
执行 docker pull hello-world,观察是否秒级完成。











