[!info]
守护进程配置优先于环境变量
https://docs.docker.com/engine/daemon/proxy/
https://docs.docker.com/engine/cli/proxy/
docker container
[!info]
容器运行阶段:
可以在/etc/docker/daemon.json中配置守护进程的代理
也可以使用dockerd的--http-proxy或--https-proxy标志来配置
配置:
{
"proxies": {
"http-proxy": "http://proxy.example.com:3128",
"https-proxy": "https://proxy.example.com:3129",
"no-proxy": "*.test.example.com,.example.org,127.0.0.0/8"
}
}
更改配置文件后,重新启动守护进程:
sudo systemctl restart docker
dockerd
[!info]
docker pull由守护进程dockerd执行,即systemd管理
创建配置目录:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf
配置:
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:3128"
Environment="HTTPS_PROXY=https://proxy.example.com:3129"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"
# 特殊字符必须使用 %% 进行双转义
Environment="HTTP_PROXY=http://domain%%5Cuser:complex%%[email protected]:3128/"
刷新配置并重启 docker 服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
验证配置:
sudo systemctl show --property=Environment docker
docker build
[!info]
docker build使用--build-arg标志docker run使用--env标志
示例:
docker build \
--build-arg "HTTP_PROXY=http://localhost:7897/" \
--build-arg "HTTPS_PROXY=http://localhost:7897/" \
--build-arg "NO_PROXY=localhost,127.0.0.1,.example.com" \
-t image:tag .