为 Docker 配置 HTTP 代理(systemd 方式)

4

在公司或特定网络环境下使用 Docker 时,可能会遇到网络访问受限、拉取镜像缓慢等问题。这时通过为 Docker 设置 HTTP/HTTPS 代理,可以有效提升访问效率。本文记录如何使用 systemd 的方式为 Docker 服务设置代理。

步骤一:创建配置目录

Docker 使用 systemd 管理服务,我们需要先为它创建一个服务配置目录:

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

步骤二:编辑代理配置文件

在该目录下创建一个新的配置文件 http-proxy.conf

vi /etc/systemd/system/docker.service.d/http-proxy.conf

示例配置内容如下,根据你的代理服务器地址进行修改:

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.somecorp.local"

💡 NO_PROXY 用于指定不走代理的地址,可以根据需要添加内网地址或自定义的镜像源。

步骤三:重新加载并重启 Docker 服务

配置完成后,运行以下命令使配置生效:

systemctl daemon-reexec
systemctl daemon-reload
systemctl restart docker

这些命令的含义:

  • daemon-reexec:重新执行 systemd 主进程(较少用,但推荐一起执行)

  • daemon-reload:重新加载服务配置

  • restart docker:重启 Docker 服务以应用代理配置

步骤四:验证代理配置是否生效

通过以下命令查看 Docker 是否已读取代理配置:

docker info | grep -i proxy

如果输出如下内容,说明代理设置成功:

 HTTP Proxy: http://127.0.0.1:7890
 HTTPS Proxy: http://127.0.0.1:7890

小结

以上步骤适用于大多数 Linux 系统(如 Ubuntu、CentOS)中使用 systemd 管理 Docker 的场景。通过配置 HTTP/HTTPS 代理,可以加快镜像下载速度,解决访问问题,是提升开发效率的一个重要手段。


如需支持 SOCKS5 代理或更复杂的场景(如只为某些镜像设置代理),可以配合 proxychains、iptables 或 Docker CLI 的 --config 参数进一步优化。

如果你有部署在 CI/CD 中的需求,也可以将该配置同步到构建环境中。欢迎留言交流其他代理使用经验 🙌