HTTP/HTTPS 代理
Docker 守护程序在其启动环境中使用 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 环境变量来配置 HTTP 或 HTTPS 代理。NO_PROXY 您不能使用该 daemon.json 文件配置这些环境变量。
此示例覆盖默认 docker.service
文件。
如果您在 HTTP 或 HTTPS 代理服务器后面,例如在公司设置中,则需要在 Docker systemd 服务文件中添加此配置。
Note for rootless mode
在 rootless mode 运行 Docker 时,systemd 配置文件的位置是不同的。在 rootless 模式下运行时,Docker 作为用户模式 systemd 服务启动,并使用存储在每个用户主目录中的文件~/.config/systemd/user/docker.service.d/。此外,systemctl必须在不带sudo和带--user 标志的情况下执行。如果您在无根模式下运行 Docker,请选择下面的“无根模式”选项卡。
1、regular install
- 为 docker 服务创建一个 systemd 插入目录:
sudo mkdir -p /etc/systemd/system/docker.service.d
- 创建一个名为
/etc/systemd/system/docker.service.d/http-proxy.conf
- 添加
HTTP_PROXY
- 环境变量的文件:
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
如果您在 HTTPS 代理服务器后面,请设置HTTPS_PROXY
环境变量:
[Service]
Environment="HTTPS_PROXY=https://proxy.example.com:443"
可以设置多个环境变量;设置非 HTTPS 和 HTTPS 代理;
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=https://proxy.example.com:443"
- 如果您有内部 Docker 注册表需要在不使用代理的情况下联系,您可以通过
NO_PROXY
- 环境变量指定它们。
该
NO_PROXY
- 变量指定一个字符串,其中包含应从代理中排除的主机的逗号分隔值。这些是您可以指定以排除主机的选项:
- IP 地址前缀 (
1.2.3.4
- )
- 域名或特殊的 DNS 标签 (
*
- )
- 域名与该名称和所有子域匹配。以“.”开头的域名仅匹配子域。例如,给定域
foo.example.com
- 和
example.com
- :
example.com
- 匹配
example.com
- 和
foo.example.com
- , 和
.example.com
- 仅匹配
foo.example.com
- 单个星号 (
*
- ) 表示不应进行代理
- IP 地址前缀接受IP地址端口号(1.2.3.4:80)和域名 (
foo.example.com:80
- )。
配置示例:
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=https://proxy.example.com:443"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp
- 刷新更改并重新启动 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
- 验证配置是否已加载并与您所做的更改相匹配,例如:
sudo systemctl show --property=Environment docker
Environment=HTTP_PROXY=http://proxy.example.com:80 HTTPS_PROXY=https://proxy.example.com:443 NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp
2、rootless mode
- 为 docker 服务创建一个 systemd 插入目录:
mkdir -p ~/.config/systemd/user/docker.service.d
- 创建一个名为
~/.config/systemd/user/docker.service.d/http-proxy.conf
- 添加
HTTP_PROXY
- 环境变量的文件:
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
如果您在 HTTPS 代理服务器后面,请设置HTTPS_PROXY
环境变量:
[Service]
Environment="HTTPS_PROXY=https://proxy.example.com:443"
可以设置多个环境变量;设置非 HTTPS 和 HTTPS 代理;
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=https://proxy.example.com:443"
- 如果您有内部 Docker 注册表需要在没有代理的情况下联系,您可以通过
NO_PROXY
- 环境变量指定它们。
该
NO_PROXY
- 变量指定一个字符串,其中包含应从代理中排除的主机的逗号分隔值。这些是您可以指定以排除主机的选项:
- IP 地址前缀 (
1.2.3.4
- )
- 域名或特殊的 DNS 标签 (
*
- )
- 域名与该名称和所有子域匹配。以“.”开头的域名仅匹配子域。例如,给定域
foo.example.com
- 和
example.com
- :
example.com
- 匹配
example.com
- 和
foo.example.com
- , 和
.example.com
- 仅匹配
foo.example.com
- 单个星号 (
*
- ) 表示不应进行代理
IP 地址前缀接受IP地址端口号(1.2.3.4:80)和域名 (foo.example.com:80)。
配置示例:
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80"
Environment="HTTPS_PROXY=https://proxy.example.com:443"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"
- 刷新更改并重新启动 Docker
systemctl --user daemon-reload
systemctl --user restart docker
- 验证配置是否已加载并与您所做的更改相匹配,例如:
systemctl --user show --property=Environment docker
Environment=HTTP_PROXY=http://proxy.example.com:80 HTTPS_PROXY=https://proxy.example.com:443 NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp