为Docker配置网络代理

Mr.Bai 566 浏览 0

由于网络原因,需要为docker配置网络代理,配置docker网络适用三种场景,具体实现与Linux设置 http_proxy 环境变量原理相同。

Dockerd代理配置

在执行docker pull拉取时是由dockerd守护进程来执行的,所以需要在dockerd中配置代理,而dockerdsystemd 管控,因此只需对 systemd 进行配置即可。

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf

在创建的 proxy.conf 文件中键入以下内容,当然 proxy.conf 文件的名称可以是任意,只需后缀为 .conf 即可。

[Service] 
Environment="HTTP_PROXY=http://proxy.com:8080/"
Environment="HTTPS_PROXY=http://proxy.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

重启生效。

sudo systemctl daemon-reload
sudo systemctl restart docker
在本文中,proxy.com:8080 要更换为可用的免密代理。

Container容器代理

在容器运行阶段,需要使用代理网络,则直接配置 ~/.docker/config.json 文件。

{
 "proxies":
 {
   "default":
   {
   "httpProxy": "http://proxy.com:8080",
   "httpsProxy": "http://proxy.com:8080",
   "noProxy": "localhost,127.0.0.1,.example.com"
   }
 }
}

这是用户级别的配置方式,除此之外,还可以通过 -e 参数来注入 http_proxy 环境变量,具体实现参考文章:

WSL为Docker构建Dockerfile 项目时设置容器代理

3年前 (2022-04-22) 0
WSL为Docker构建Dockerfile 项目时设置容器代理

Docker Build 代理

虽然 docker build 的本质,也是启动一个容器,但是环境会略有不同,用户级配置无效。在构建时,需要注入 http_proxy 等参数。

docker build . \
  --build-arg "HTTP_PROXY=http://proxy.com:8080/" \
  --build-arg "HTTPS_PROXY=http://proxy.com:8080/" \
  --build-arg "NO_PROXY=localhost,127.0.0.1,.example.com" \
  -t your/image:tag

发表评论 取消回复
表情 图片 链接 代码

分享
请选择语言