第一部分:创建目录并写入代理配置文件
mkdir -p /etc/systemd/system/docker.service.d && tee /etc/systemd/system/docker.service.d/proxy.conf > /dev/null << 'EOF'
[Service]
#Environment="HTTP_PROXY=socks5://172.16.2.30:7897/"
#Environment="HTTPS_PROXY=socks5://172.16.2.30:7897/"
Environment="HTTP_PROXY=http://172.16.2.30:7897/"
Environment="HTTPS_PROXY=http://172.16.2.30:7897/"
# 可选:添加NO_PROXY排除内网地址
#Environment="NO_PROXY=localhost,127.0.0.1,172.16.0.0/12,192.168.0.0/16"
EOF
-
mkdir -p /etc/systemd/system/docker.service.d
mkdir:创建目录的命令
-p:递归创建目录,如果上级目录不存在会自动创建;如果目录已存在,不会报错
- 路径说明:
/etc/systemd/system/docker.service.d 是 systemd 为 docker 服务配置自定义参数的官方目录,systemd 会自动加载该目录下的.conf文件
-
&&
- Shell 中的逻辑运算符,表示前一个命令执行成功后,才执行后面的命令
- 作用:确保目录创建成功后,再写入配置文件
-
tee /etc/systemd/system/docker.service.d/proxy.conf > /dev/null
tee:读取标准输入并写入指定文件,同时输出到标准输出
> /dev/null:将 tee 原本要输出到终端的内容重定向到空设备(丢弃),避免终端刷屏
- 作用:将后续的 EOF 之间的内容写入到
proxy.conf文件中
-
<< 'EOF' ... EOF(Here Document 语法)
<< 'EOF':表示读取后续内容直到遇到EOF为止,单引号'表示里面的内容原样输出(不解析变量、转义字符等)
- 配置内容说明:
[Service]:systemd 配置文件的区块标识,表示这些配置应用于服务的运行时环境
Environment:设置环境变量的指令,这里用于配置 Docker 服务的网络代理
- 注释掉的行(
#开头):是备用的代理配置,你可以根据实际情况取消注释使用
- 生效的配置:
HTTP_PROXY=http://172.16.2.30:7897/ 和 HTTPS_PROXY=http://172.16.2.30:7897/ 是当前启用的 HTTP/HTTPS 代理地址
NO_PROXY:可选配置,用于指定不需要走代理的地址(内网、本地地址等)
第二部分:重新加载配置并重启 Docker
# 重新加载systemd配置
systemctl daemon-reload
# 重启Docker服务
systemctl restart docker
# 检查Docker状态
systemctl status docker
-
systemctl daemon-reload
- 作用:让 systemd 重新加载所有服务配置文件(包括刚创建的 proxy.conf)
- 注意:修改 systemd 配置后必须执行此命令,否则新配置不会生效
-
systemctl restart docker
- 重启 Docker 服务,使新的代理环境变量生效
- 执行后 Docker 服务会先停止,再启动
-
systemctl status docker
- 查看 Docker 服务的当前状态
- 输出内容包含:
- 服务是否正在运行(active (running))
- 服务启动时间
- 进程 ID(PID)
- 最近的日志信息(可排查启动失败问题)