[!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 .