如何给Docker设置代理
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 文件或者是在系统环境变量文件中配置它们都不会使其生效。具体的配置步骤如下。
在
/etc/systemd/system
目录下创建 docker.service.d 目录:sudo mkdir -p /etc/systemd/system/docker.service.d
在该目录下创建
http-proxy.conf
文件:vim /etc/systemd/system/docker.service.d/http-proxy.conf
根据自身需要添加下面的内容并替换为实际的配置,一般只需要添加
HTTP_PROXY
和HTTPS_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 服务
重启 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