Linux服务端如何使用clash作为docker的代理
背景
因为本地的老mac无法继续升级操作系统了,因此无法使用docker-desktop且也无法安装命令行版本的docker了。因此,只能使用虚拟机或Linux服务器进行docker的部署,然而由于众所周知的原因导致在国内基本上无法登录docker.com并访问docker-hub。因此,需要科学上网配合。我使用的是 www.ghelper.net 做代理,服务器操作系统使用CentOS,使用root账户。
安装配置 clash
当你在chrome安装了ghelper插件后购买了会员后,可以在其控制面板找到下载 clash的github链接。下载 Clash.linux.zip 到Linux服务器上并解压。
打开解压文件夹 clash-for-linux 下的 .env 文件,将你的ghelper代理订阅Linux地址替换到变量CLASH_URL的值即可,CLASH_SECRET这个变量可以不填,会自动随机数代替。
之后将该目录下的*.sh 都设置为可执行 chmod +x *.sh ,后运行 ./start.sh 即可。
需要用如下命令检查clash是否真正启动起来(默认端口7890) ss -lntp | grep 7890 有结果则意味着服务已启动;若无内容则启动未成功,需要查看日志看是什么原因。
配置docker使用代理
在当前终端窗口设置代理环境变量
# 1. 设置代理变量,当前窗口终端有效
export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
# 尝试登录docker hub
docker login
# 若登录成功,则即可使用了,否则进行如下第2步
# 2. 进行守护进程级别的设置,执行如下脚本
PROXY_PORT=7890
mkdir -p /etc/systemd/system/docker.service.d
cat <<EOF | tee /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:${PROXY_PORT}"
Environment="HTTPS_PROXY=http://127.0.0.1:${PROXY_PORT}"
Environment="NO_PROXY=localhost,127.0.0.1,*.aliyuncs.com"
EOF
# 重启守护进程
systemctl daemon-reload
# 重启docker服务
systemctl restart docker
# 尝试登录docker hub
docker login
# 登录成功后,所有的 docker 网络操作都会使用代理进行,包括push/pull等。恭喜你,docker正式可用!
注意事项
-
clash 的配置一定要和你的操作系统一致,否则可能会出现配置文件yaml内含有非法字符等原因导致clash无法解析yaml配置文件而无法启动。
-
如果使用了守护进程级别的代理设置,可能需要考虑不要影响其他的应用。因此如果可能尽量用终端方式.