Docker 程序安装

export https_proxy=http://172.22.11.200:7777
export http_proxy=http://172.22.11.200:7777

需要 172.22.11.200:7777 是你的代理主机的 IP 地址和端口。

通过代理拉取或者推送国外镜像

在国内拉取 Docker 中央仓库的镜像本来就速度就一直比较慢,近期就更慢了,基本处于一个不可达的状态。当然我们可以通过设置国内一些加速镜像器来加速镜像下载。但是国内镜像不全,更新也不及时,如果你要下载的镜像国内加速器上没有的话,你最终还是要 Docker 中央仓库镜像去下载。

此时我们可以通过给 Docker 镜像下载器配置一个代理来一劳永逸地解决问题。如果你使用的 Docker-Deskop 桌面版,那么你可以直接通过图形界面设置就好。

如果你的 Docker 服务是跑在服务器上,那么配置会稍微复杂一些。因为 Docker 守护程序(dockerd)是在其启动环境中使用 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 环境变量来配置 HTTP 或 HTTPS 代理行为,需要在 Docker systemd 服务文件中添加此配置。 在 daemon.json 文件或者是在系统环境变量文件中配置它们都不会使其生效。具体的配置步骤如下。

  1. /etc/systemd/system 目录下创建 docker.service.d 目录:

    sudo mkdir -p /etc/systemd/system/docker.service.d
    
  2. 在该目录下创建 http-proxy.conf 文件:

    vim /etc/systemd/system/docker.service.d/http-proxy.conf
    

    根据自身需要添加下面的内容并替换为实际的配置,一般只需要添加 HTTP_PROXYHTTPS_PROXY

    [Service]
    Environment="HTTP_PROXY=http://172.22.11.200:7777"
    Environment="HTTPS_PROXY=http://172.22.11.200:7777"
    Environment="NO_PROXY=localhost,127.0.0.1"
    

    注意: HTTP_PROXY 用于代理访问 http 请求,HTTPS_PROXY 用于代理访问 https 请求,如果想某个 IP或域名不走代理则配置到 NO_PROXY中。3.重启 Docker 服务

  3. 重启 Docker 服务

sudo systemctl daemon-reload
sudo systemctl restart docker

Docker 容器中使用代理

如果想在 Docker 容器中使用代理访问外部网络,可以在启动容器的时候注入环境变量即可:

docker run --name test -e http_proxy=http://172.22.11.200:7777 -e https_proxy=http://172.22.11.200:7777 test:latest

如果是通过 docker-compose 启动,则需要在 docker-compose.yaml 配置文件中增加注入环境变量,例如:

services:
  comfyui:
    image: "test:latest"
    container_name: "test"
    restart: always
    ports:
      - "8080:8080"
    environment:
      - HTTPS_PROXY=http://172.22.11.200:7777
      - HTTP_PROXY=http://172.22.11.200:7777