Windows 10下Docker无法连接镜像仓库下载镜像问题求助
Windows 10 Docker拉取镜像失败的排查与解决
针对你遇到的Docker无法拉取镜像、代理配置不生效的问题,结合同网络其他设备及虚拟机正常的情况,可从以下几个方向排查解决:
1. 修正Docker Desktop代理配置优先级问题
Docker Desktop的UI配置优先级高于手动修改config.json,之前的配置未生效可能是因为未通过官方界面设置:
- 打开Docker Desktop,进入Settings > Resources > Proxies
- 选择「Manual proxy configuration」,填入你的Squid代理地址:
http://192.168.150.107:3128 - 在「Exclude」栏添加无需代理的地址:
localhost,127.0.0.1,docker.internal,http.docker.internal - 点击「Apply & Restart」重启Docker,执行
docker info确认代理地址已更新
2. 排查Windows防火墙/安全软件拦截
Windows防火墙或第三方安全工具可能阻断了Docker的网络请求:
- 临时关闭Windows Defender防火墙,执行
docker run hello-world测试是否正常 - 若测试成功,在防火墙中添加Docker相关程序的允许规则:找到
Docker Desktop.exe、dockerd.exe,允许其通过防火墙访问网络 - 检查第三方杀毒软件、网络安全工具,确认是否有拦截Docker出站请求,临时关闭后重试
3. 修复WSL2后端网络异常(若使用WSL2模式)
如果Docker使用WSL2后端,可能存在网络配置冲突:
- 打开Docker Desktop Settings > General,确认已启用「Use the WSL 2 based engine」
- 打开PowerShell执行
wsl --shutdown,完全关闭WSL2后重启Docker Desktop - 进入WSL2的Ubuntu发行版,测试网络连通性:
若返回正常(curl会返回401未授权,属于正常现象),说明WSL2网络正常,问题在Windows侧Docker配置ping registry-1.docker.io curl https://registry-1.docker.io/v2/ - 可尝试重置Docker网络:进入Settings > Troubleshoot > Reset to factory defaults(注意备份本地镜像)
4. 清理代理配置残留,修复http.docker.internal映射
http.docker.internal是Docker默认代理地址,可能存在配置残留导致无法覆盖:
- 删除
C:\Users\<你的用户名>\.docker\config.json文件,通过Docker Desktop UI重新配置代理 - 检查系统环境变量,若存在
HTTP_PROXY、HTTPS_PROXY被设置为http.docker.internal:3128,直接删除或修改为你的Squid代理地址,重启Docker
5. 调整Squid代理的访问权限
本地虚拟机的Squid代理可能未允许Windows主机访问:
- 进入VirtualBox的Ubuntu虚拟机,编辑Squid配置文件:
sudo nano /etc/squid/squid.conf - 添加允许Windows主机子网的规则(根据你的实际子网调整):
acl localnet src 192.168.150.0/24 http_access allow localnet - 重启Squid服务:
sudo systemctl restart squid - 在Windows主机测试代理连通性:
若返回curl -x http://192.168.150.107:3128 https://registry-1.docker.io/v2/401 Unauthorized,说明代理本身可正常连通
内容的提问来源于stack exchange,提问作者Aadhaar Mehrotra
相关产品推荐
相关产品推荐

