docker分别在pull镜像,运行容器,构建镜像时使用代理的方法
配置pull镜像时使用的代理
docker pull
由dockerd
进程发起,而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
... # 其他配置
|