Featured image of post Docker配置代理(pull/run/build)

Docker配置代理(pull/run/build)

docker分别在pull镜像,运行容器,构建镜像时使用代理的方法

配置pull镜像时使用的代理

docker pulldockerd进程发起,而dockerd进程是一个后台进程,不会读取当前用户的环境变量,所以我们需要在/etc/systemd/system/docker.service.d/http-proxy.conf中配置代理。

1
2
3
4
5
6
7
8
9
mkdir -p /etc/systemd/system/docker.service.d
cat <<EOF > /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890/" # 改成你自己的代理地址
Environment="HTTPS_PROXY=http://127.0.0.1:7890/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
EOF
systemctl daemon-reload
systemctl restart docker

配置容器运行时使用的代理

容器运行时使用的代理配置在~/.docker/config.json中,如果没有该文件,可以手动创建。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
mkdir -p ~/.docker
cat <<EOF > ~/.docker/config.json
{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://127.0.0.1:7890/", # 改成你自己的代理地址
     "httpsProxy": "http://127.0.0.1:7890/",
     "noProxy": "localhost,127.0.0.0/8,.example.com,172.128.2.0/24" # 如果你的容器之间使用了内网通信,例如172.x.x.x/24,也需要加入到noProxy中
   }
 }
}
EOF

配置构建镜像时使用的代理

在Dockerfile中配置代理

1
2
3
4
FROM debian:latest
ENV http_proxy http://192.168.8.110:7890
ENV https_proxy http://192.168.8.110:7890
... # 其他配置

使用 Hugo 构建
主题 StackJimmy 设计