找到一篇docker设置代理的方法,三个不同阶段有不同的代理方式,链接如下。

https://note.qidong.name/2020/05/docker-proxy/

为防链接失效,我把相关的设置贴下来保存(文字类就省略了)

容器运行阶段,代理上网(不需要重启)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
~/.docker/config.json
{
 "proxies": {
   "default": {
     "httpProxy": "http://172.16.1.90:7890",
     "httpsProxy": "http://172.16.1.90:7890",
     "noProxy": "*.test.example.com,.example.org,127.0.0.0/8"
   }
 }
}

docker拉取镜像的代理设置(需要重启,systemctl daemon-reload; systemctl restart docker)

1
2
3
4
5
6
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf
[Service]
Environment="HTTP_PROXY=http://172.16.1.90:7890/"
Environment="HTTPS_PROXY=http://172.16.1.90:7890/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

docker build阶段

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