好好活就是有意义的事,有意义的事就是好好活
Docker(包括WSL2)如何配置Proxy
Docker(包括WSL2)如何配置Proxy

Docker(包括WSL2)如何配置Proxy

前言

docker使用proxy分两种情况:

  • docker client希望使用代理,也就是在执行docker pull、docker push等操作时通过代理来访问镜像仓库
  • 容器实例希望使用代理,也就是在容器内部希望通过代理来访问网络

两者的配置显然是不一样,各自的官方文档见文末参考文献.

配置client 代理(常规安装方式)[1]

创建配置文件

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

添加配置

[Service]
Environment="HTTP_PROXY=http://211.69.198.232:8118"
Environment="HTTPS_PROXY=http://211.69.198.232:8118"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp,211.69.198.232"

重启容器

sudo systemctl daemon-reload
sudo systemctl restart docker

配置容器实例代理[2]

方式一,配置文件(仅支持 Docker 版本 >= 17.07)

1、创建配置文件

vim  ~/.docker/config.json

2、添加配置信息

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://211.69.198.232:8118",
     "httpsProxy": "http://211.69.198.232:8118",
     "noProxy": "*.test.example.com,.example2.com,127.0.0.0/8,211.69.198.232"
   }
 }
}

方式二,手动添加环境变量(仅支持 Docker 版本 >= 17.07)

通过 --env 在启动容器时,添加对应的环境变量:

VariableDockerfile exampledocker run example
HTTP_PROXYENV HTTP_PROXY=”http://192.168.1.12:3128–env HTTP_PROXY=”http://192.168.1.12:3128
HTTPS_PROXYENV HTTPS_PROXY=”https://192.168.1.12:3128–env HTTPS_PROXY=”https://192.168.1.12:3128
FTP_PROXYENV FTP_PROXY=”ftp://192.168.1.12:3128″–env FTP_PROXY=”ftp://192.168.1.12:3128″
NO_PROXYENV NO_PROXY=”*.test.example.com,.http://example2.com–env NO_PROXY=”*.test.example.com,.http://example2.com

WSL2中配置代理

对于容器实例的代理, 配置方式同上所述, 问题在于Docker CLient的代理配置, 因为WSL2并不是采用Systemd方式管理的!

情况一, docker安装在WSL2中[3]

即,在WSL2中通过通用方式安装的docker.

sudo vim /etc/default/docker

输入:
export HTTP_PROXY="http://211.69.198.232:8118"
export HTTPS_PROXY="http://211.69.198.232:8118"
export NO_PROXY="localhost,127.0.0.0/8,172.16.0.0/12,192.168.0.0/16,10.0.0.0/8"

情况二, 安装了Docker-Desktop

即, 安装了Windows版本的Docker.

修改完成后, 可以通过以下命令检查:

cat /etc/default/docker

参考

  1. Control Docker with systemd https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
  2. Configure Docker to use a proxy server https://docs.docker.com/network/proxy/
  3. WSL 2 Docker Behind Proxy https://stevegy.medium.com/wsl-2-docker-behind-proxy-fc55083d5ec5

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注