Docker配置代理脚本

Avatar photo

原文:📢 实用干货 | 30秒快速配置Docker代理(附完整脚本) – 知乎 (zhihu.com)

脚本功能

  • 双向操作:一键设置/清除代理(支持HTTP/HTTPS)
  • 智能配置:自动生成systemd服务文件
  • 安全白名单:默认排除本地地址,按需要添加网络域名
  • 状态验证:执行后自动提示检查命令

完整脚本内容

建议保存为docker-proxy.sh

#!/bin/bash

# ===================== 用户配置区 =====================
# ▼▼▼ 以下变量必须修改 ▼▼▼
HTTP_PROXY="http://192.168.1.118:7890/"    # 改为你的代理IP和端口
HTTPS_PROXY="http://192.168.1.118:7890/"   # 同上
NO_PROXY="localhost,127.0.0.1,.corp.com"   # 内网域名白名单
# ▲▲▲ 修改结束 ▲▲▲

# ===================== 执行逻辑 =====================
if [ $# -eq 0 ]; then
    echo "错误:请指定操作模式"
    echo "用法:sudo $0 {set|remove}"
    exit 1
fi

# 创建配置目录
sudo mkdir -p /etc/systemd/system/docker.service.d/

case "$1" in
    "set")
        echo "▶ 正在注入代理配置(目标地址:${HTTP_PROXY})..."
        
        # 生成代理配置文件
        sudo tee /etc/systemd/system/docker.service.d/proxy.conf > /dev/null <<EOF
[Service]
Environment="HTTP_PROXY=${HTTP_PROXY}"
Environment="HTTPS_PROXY=${HTTPS_PROXY}"
Environment="NO_PROXY=${NO_PROXY}"
EOF

        # 重载服务配置
        sudo systemctl daemon-reload
        sudo systemctl restart docker
        echo "✔ 代理已生效!"
        echo "  验证命令:docker info | grep -i proxy"
        ;;

    "remove")
        echo "▶ 正在清除代理配置..."
        
        sudo rm -f /etc/systemd/system/docker.service.d/proxy.conf
        sudo systemctl daemon-reload
        sudo systemctl restart docker
        echo "✔ 已恢复原始环境"
        ;;

    *)
        echo "错误:无效参数,支持 set 或 remove"
        exit 1
        ;;
esac

echo "  注意:若容器网络异常,请尝试重启容器!"

操作指南

保存脚本:

chmod +X docker-proxy.sh

执行命令:

#设置代理
sudo ./docker-proxy.sh set
#清除代理
sudo ./docker-proxy.sh remove