Docker 在尝试连接 Docker Hub 时遇到网络问题(超时)
1. 检查虚拟机网络连接
确保虚拟机可以访问互联网:
ping 8.8.8.8 # 测试基础网络
ping google.com # 测试DNS解析
- 如果失败:检查虚拟机网络设置(如 NAT/桥接模式),确保主机网络正常。
2. 解决 DNS 问题(常见原因)
Docker 可能无法解析 registry-1.docker.io
:
nslookup registry-1.docker.io # 检查域名解析
- 若解析失败:
方法 1:修改虚拟机的 DNS 配置(如使用8.8.8.8
):
方法 2:修改 Docker 的 DNS 设置:echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
创建或编辑/etc/docker/daemon.json
:
重启 Docker:{"dns": ["8.8.8.8", "114.114.114.114"] }
sudo systemctl restart docker
3. 配置代理(如果主机使用代理上网)
如果主机通过代理访问互联网,需在虚拟机中配置代理:
-
为 Docker 服务设置代理:
创建配置文件/etc/systemd/system/docker.service.d/http-proxy.conf
:[Service] Environment="HTTP_PROXY=http://<代理IP>:<端口>" Environment="HTTPS_PROXY=http://<代理IP>:<端口>" Environment="NO_PROXY=localhost,127.0.0.1"
应用配置:
sudo systemctl daemon-reload sudo systemctl restart docker
-
临时测试(不推荐长期使用):
export HTTP_PROXY=http://<代理IP>:<端口> export HTTPS_PROXY=http://<代理IP>:<端口> sudo systemctl restart docker
4. 检查防火墙
虚拟机或主机的防火墙可能阻止 Docker 访问外网:
- 虚拟机内:临时关闭防火墙测试
sudo ufw disable # Ubuntu sudo systemctl stop firewalld # CentOS
- 主机防火墙:确保允许虚拟机的出站连接(如 VMware/NAT 的虚拟网卡)。
5. 调整 Docker 镜像地址(关键步骤)
编辑 /etc/docker/daemon.json
(如果没有就新增):
{"registry-mirrors" : ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc","https://do.nark.eu.org","https://dc.j8.work","https://dockerproxy.com","https://gst6rzl9.mirror.aliyuncs.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com","http://mirrors.ustc.edu.cn/","https://mirrors.tuna.tsinghua.edu.cn/","http://mirrors.sohu.com/"],"insecure-registries" : ["registry.docker-cn.com","docker.mirrors.ustc.edu.cn"],"debug": true,"experimental": false
}
重启 Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
6. 检查 Docker Hub 状态
访问 Docker Status 页面 确认 Docker Hub
服务是否正常。
7. 其他尝试
- 重启 Docker 服务:
sudo systemctl restart docker
- 更新 Docker 版本:
sudo apt-get update && sudo apt-get upgrade docker-ce # Ubuntu
总结排查流程
完成上述步骤后,再次运行容器(如 docker run hello-world
)测试是否成功。如果问题依旧,请提供以下信息以便进一步排查:
- 虚拟机操作系统及版本
- Docker 版本 (
docker version
) - 虚拟机网络模式(NAT/桥接)
- 主机是否使用 VPN/代理