Hugh's Blog

Docker 配置网络代理

 

Docker 守护进程代理配置

由于 docker pull 是由守护进程来执行,因此需要将代理配置在 docker 的运行环境中,即配置 systemd 环境变量。

添加配置文件:

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf

proxy.conf 文件内容:

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:1080"
Environment="HTTPS_PROXY=http://127.0.0.1:1080"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

检查是否在 systemd 配置成功:

sudo systemctl show --property=Environment docker

如果是以 service docker start 命令启动,则配置文件为 /etc/init.d/docker,在文件开头添加以下两行:

export HTTP_PROXY=http://127.0.0.1:1080
export HTTPS_PROXY=http://127.0.0.1:1080

配置完成之后重启 docker,通过命令 docker info 查看:

Docker Root Dir: /var/lib/docker
Debug Mode: false
HTTP Proxy: http://127.0.0.1:1080
HTTPS Proxy: http://127.0.0.1:1080

Docker Build 代理配置

docker build 构建过程中也可以单独配置代理,通过 --build-arg 参数实现:

docker build . \
    --build-arg "HTTP_PROXY=http://127.0.0.1:1080" \
    --build-arg "HTTPS_PROXY=http://127.0.0.1:1080" \
    --build-arg "NO_PROXY=localhost,127.0.0.1,.example.com" \
    -t test-image:latest

参考

Configure the Docker daemon to use a proxy