为 Docker 配置代理服务器,加速拉取镜像

发布于 8 天前  0 次阅读


当你的服务器位于企业内网或受限制的网络环境中时,Docker 可能无法直接访问外部镜像仓库。本教程将详细介绍如何通过 systemd 为 Docker 守护进程配置 HTTP/HTTPS 代理,解决网络访问问题。

前置条件

  • Linux 系统(本教程以 Debian/Ubuntu 为例)
  • Docker 已安装
  • sudo 或 root 权限
  • 可用的代理服务器地址

步骤 1:创建代理配置目录

首先,我们需要创建 systemd 的 Docker 服务覆盖目录:


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

这个目录用于存放 Docker 服务的自定义配置,systemd 会优先读取这里的配置。

步骤 2:创建代理配置文件

使用你喜欢的文本编辑器创建代理配置文件:


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

将以下内容粘贴到文件中,替换为你实际的代理服务器地址:


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

配置参数说明

  • HTTP_PROXY: 用于 HTTP 流量的代理地址
  • HTTPS_PROXY: 用于 HTTPS 流量的代理地址(通常与 HTTP_PROXY 相同)
  • NO_PROXY: 不需要走代理的地址列表,用逗号分隔
    • 包括本地地址、内网域名等
    • 支持通配符(如 .example.com 匹配所有子域名)

步骤 3:重新加载 systemd 配置

让 systemd 重新加载配置:


sudo systemctl daemon-reload

步骤 4:重启 Docker 服务

应用代理设置:


sudo systemctl restart docker

步骤 5:验证配置是否生效

检查 Docker 服务环境变量:


sudo systemctl show docker --property Environment

如果配置正确,你应该能看到类似这样的输出:


Environment=HTTP_PROXY=http://proxy.example.com:8080 HTTPS_PROXY=http://proxy.example.com:8080 NO_PROXY=localhost,127.0.0.1,.example.com

验证代理是否工作

测试 Docker 能否通过代理拉取镜像:


docker pull hello-world

如果配置正确,Docker 应该能成功拉取镜像。

希望赤诚善良的人,能被世界温柔以待
最后更新于 2025-06-27