当你的服务器位于企业内网或受限制的网络环境中时,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 应该能成功拉取镜像。
Comments NOTHING