【原创】在国内 VPS 上优雅使用代理:一套可复用的 Docker 与 GitHub 加速方案

image


在国内 VPS 上优雅使用代理(Docker + GitHub 一键方案)


一、Docker 使用代理(systemd 级,一键命令,逐行注释)

作用:

  • docker pull
  • docker build
  • CI / 后台服务

不影响你普通 SSH shell 网络

# ================== 代理参数(以后只改这里) ==================
PROXY_USER="YOUR_USER"          # 代理用户名(没有就留空)
PROXY_PASS="YOUR_PASS"          # 代理密码(没有就留空)
PROXY_HOST="YOUR_PROXY_IP"      # 代理服务器 IP 或域名
PROXY_PORT="YOUR_PROXY_PORT"    # 代理端口
# ================================================================

# 如果填写了用户名,则拼接 user:pass@
# 如果没有用户名,则不使用认证信息
if [ -n "$PROXY_USER" ]; then
  PROXY_AUTH="${PROXY_USER}:${PROXY_PASS}@"   # 含认证的代理前缀
else
  PROXY_AUTH=""                               # 无认证
fi

# 创建 Docker systemd 覆盖目录(不存在则创建)
sudo mkdir -p /etc/systemd/system/docker.service.d

# 写入 Docker 的代理配置文件
sudo tee /etc/systemd/system/docker.service.d/proxy.conf >/dev/null <<EOF
[Service]
Environment="HTTP_PROXY=http://${PROXY_AUTH}${PROXY_HOST}:${PROXY_PORT}"     # Docker HTTP 代理
Environment="HTTPS_PROXY=http://${PROXY_AUTH}${PROXY_HOST}:${PROXY_PORT}"   # Docker HTTPS 代理
Environment="NO_PROXY=localhost,127.0.0.1,::1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"  # 内网直连
EOF

# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 重启 Docker 服务使代理生效
sudo systemctl restart docker

# 查看 Docker 当前生效的代理环境变量(用于验证)
sudo systemctl show --property=Environment docker | sed 's/Environment=//'

验证(任选一个):

docker pull hello-world                     # 拉取测试镜像
docker pull ghcr.io/library/nginx:latest    # 拉海外镜像

二、Shell 永久使用代理(GitHub / curl / 包管理器)

作用:

  • git clone
  • curl / wget
  • pip / npm / go
  • 每次 SSH 登录自动生效
# ================== 代理参数(以后只改这里) ==================
PROXY_USER="YOUR_USER"          # 代理用户名(没有就留空)
PROXY_PASS="YOUR_PASS"          # 代理密码(没有就留空)
PROXY_HOST="YOUR_PROXY_IP"      # 代理服务器 IP 或域名
PROXY_PORT="YOUR_PROXY_PORT"    # 代理端口
# ================================================================

# 判断是否需要拼接认证信息
if [ -n "$PROXY_USER" ]; then
  PROXY_AUTH="${PROXY_USER}:${PROXY_PASS}@"   # 含认证
else
  PROXY_AUTH=""                               # 无认证
fi

# 如果 bashrc 中不存在标记,则追加代理配置
grep -q "### GLOBAL PROXY BEGIN" ~/.bashrc || cat <<EOF >> ~/.bashrc

### GLOBAL PROXY BEGIN
export http_proxy="http://${PROXY_AUTH}${PROXY_HOST}:${PROXY_PORT}"    # HTTP 代理
export https_proxy="http://${PROXY_AUTH}${PROXY_HOST}:${PROXY_PORT}"   # HTTPS 代理
export HTTP_PROXY="\$http_proxy"                                       # 兼容大写变量
export HTTPS_PROXY="\$https_proxy"                                     # 兼容大写变量
export ALL_PROXY="socks5://${PROXY_AUTH}${PROXY_HOST}:${PROXY_PORT}"   # SOCKS5(Git 常用)
### GLOBAL PROXY END

EOF

# 立即让当前 shell 生效
source ~/.bashrc

验证:

curl https://api.github.com    # 测试 GitHub API
curl ifconfig.me              # 查看出口 IP(是否为代理 IP)

三、如何判断“真的成功了”(一句话版)

curl ifconfig.me
  • 显示 海外 IP → ✅ 代理生效
  • 显示 国内 VPS IP → ❌ 没走代理

四、总结一句话

国内 VPS 不装代理,只作为代理客户端使用
Docker 和 Shell 分开配置,稳定、干净、好维护
以后换代理,只改 4 个参数


© 版权声明
THE END
喜欢就支持一下吧
点赞11
评论 抢沙发

请登录后发表评论

    暂无评论内容