Docker系列---【如何为 Docker 配置全局代理?】

1.问题

我在windows11上用hyper-v虚拟了一台centos7的服务器,在服务器使用docker pull拉镜像的时候,配置的加速镜像源里没有,然后自动去中央镜像库里拉,然后就报超时。然后我打开魔法,然后通过浏览器去(dockerhub)[https://hub.docker.com/]官网搜索,可以搜到。显然是我的服务器不能连接中央仓库导致的,因此,为了解决这个情况,我就给docker设置代理,这样拉取镜像的时候就不会再超时了。

2.解决方案

  • 1.确定宿主机 IP
    在虚拟机内部,你需要访问宿主机的 IP 地址。在 Hyper-V 的 NAT 模式(通常对应 192.168.137.x 网段)下,宿主机的 IP 通常是网关地址。

    • 在虚拟机中执行:ip route show | grep default或者使用ipconfig
    • 你会看到类似 default via 192.168.137.1 dev eth0 的输出,其中 192.168.137.1 就是宿主机的 IP,联网那个网卡的ip,例如wlan的。
  • 2.配置 Docker 守护进程代理
    在虚拟机中,创建或编辑 Docker 的系统服务目录:

    sudo mkdir -p /etc/systemd/system/docker.service.d
    sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf
    
  • 3.填入代理配置
    在文件中添加以下内容(注意将 IP 替换为你第一步查到的宿主机 IP):

    [Service]
    Environment="HTTP_PROXY=http://192.168.137.1:7890"
    Environment="HTTPS_PROXY=http://192.168.137.1:7890"
    Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
    

    注意:即使是 HTTPS_PROXY,通常代理协议也是填 http://,除非你的代理服务器明确支持 https 协议连接。

  • 4.允许宿主机代理被局域网连接
    重要步骤: 你的 Windows 代理软件(如 ***、v2rayN 等)默认通常只监听 127.0.0.1。你需要进入代理软件的设置,开启 “允许来自局域网的连接” (Allow LAN)

    • 如果不开启此选项,虚拟机访问 192.168.137.1:7890 会被拒绝。
  • 5.重载并重启 Docker

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  • 6.验证并拉取
    执行 docker info,在输出的底部应该能看到 HTTP Proxy 的配置信息。然后再次尝试拉取镜像。

posted on 2026-01-09 01:23  少年攻城狮  阅读(12)  评论(0)    收藏  举报

导航