Docker如何设置代理
问题
Docker在国内使用时经常出现网络不稳定的情况,比如拉取镜像时速度很慢,甚至失败。
如何给Docker设置代理呢?
回答
Dockerd 代理
给Docker服务设置代理,可以作用于镜像拉取
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf
内容如下:
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
Container 代理
给Docker容器设置代理,可以作用于容器内的网络请求
修改~/.docker/config.json
,按结构添加如下内容:
{
"proxies":
{
"default":
{
"httpProxy": "http://proxy.example.com:8080",
"httpsProxy": "http://proxy.example.com:8080",
"noProxy": "localhost,127.0.0.1,.example.com"
}
}
}
Docker Build 代理
对于在Docker Build阶段,上述容器代理又是不生效的。需要用--build-arg
注入代理设置。
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
使用镜像
除了设置代理外,如果只是拉取镜像,还可以使用国内的镜像源,比如:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
最后修改于 2025-04-21