如何配置 docker 以使用代理服务器

当运行 Docker 的服务器无法直接访问 Internet 时,需要代理。
Docker 守护进程在其启动环境中使用 HTTP_PROXY 、 HTTPS_PROXY 和 NO_PROXY 环境变量来配置 HTTP 或者 HTTPS 代理行为。

在本快速教程中,我们将展示如何在 HTTP 或者 HTTPS 代理服务器后面配置和运行 Dokcer。

01 首先,我们需要为docker服务创建一个systemd drop-in目录:

$sudo mkdir -p /etc/systemd/system/docker.service.d

02 创建一个名为 /etc/systemd/system/docker.service.d/http-proxy.conf的文件,添加 HTTP_PROXY 环境变量:

$vi /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
#Environment="HTTP_PROXY="http://USERNAME:jack@onitroad[your.proxy.server]:[port]"
Environment="HTTP_PROXY=http://lotfi:jack@onitroad:80/"

或者,如果我们使用 HTTPS 代理服务器,请创建一个名为 /etc/systemd/system/docker.service.d/https-proxy.conf的文件,添加 HTTPS_PROXY 环境变量:

$vi /etc/systemd/system/docker.service.d/https-proxy.conf
[Service] 
#Environment="HTTP_PROXY="http://USERNAME:jack@onitroad[your.proxy.server]:[port]"
Environment="HTTPS_PROXY=https://lotfi:jack@onitroad:443/"

或者,如果我们有内部 Docker 注册表需要联系而无需代理,我们可以通过 NO_PROXY 环境变量指定它们:

$vi /etc/systemd/system/docker.service.d/no-proxy.conf
[Service] 
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.onitroad.com"

03 现在,重新加载 systemd 守护进程

$systemctl daemon-reload

04 重启docker

$systemctl restart docker

05 最后验证配置是否已经加载:

$systemctl show docker --property Environment
Environment=HTTP_PROXY=http://lotfi:jack@onitroad:80/HTTPS_PROXY=https://lotfi:jack@onitroad:443/NO_PROXY=localhost,127.0.0.1,docker-registry.onitroad.com
日期:2020-06-02 22:18:44 来源:oir作者:oir