前言
自从6月份docker官网被墙了之后,为了能让家中的nas使用上docker我使用了各种方法。最常用的办法就是设置镜像代理,我尝试过别人的镜像站,也试过自己自建,或者用cf的worker进行搭建。但是怎么说呢,就我个人的使用情况而言,这些镜像站都不稳定。所以最终,还是决定直接让docker走网络代理。
搭建网络代理
我这里选择的是docker版的clash。因为现在无法连接到docker官网,所以需要我们手动下载镜像导入本地。这里需要注意nas的系统架构,比如我的是arm64。如果直接在其他机器上拉取镜像默认拉取的是那台机器系统架构的镜像,所以拉取的时候要指定版本。至于怎么拉取指定版本的镜像,可以看我之前的一篇文章。
安装命令如下:
docker run -d \
--name clash \
--restart=always \
--log-opt max-size=1m \
-v /data/clash/clash.yaml:/root/.config/clash/config.yaml \
-p 7888:8080 -p 7890:7890 \
laoyutang/clash-and-dashboard:latest
其中7888是管理端口,7890是代理端口,clash.yaml是你的clash配置文件,你可以上网搜索订阅转换,把机场的订阅链接转换成对应的文件。
打开管理端口,页面如下:
这里建议把允许局域网连接勾上,这样家中的其他设备也可以通过这台nas走代理。
配置docker代理
这部分参考了neucrack 大佬的文章。docker的代理有些复杂,它不直接走系统代理,而且docker pull和docker run这两个命令走代理的方式还有区别。这里我就只设置了docker pull的代理,毕竟只要能pull到本地,run就很容易了。其余的内容可以去看大佬的原文。
首先创建http-proxy.conf
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
在里面输入
[Service]
Environment="HTTP_PROXY=http://192.168.110.182:7890"
Environment="HTTPS_PROXY=http://192.168.110.182:7890"
192.168.110.182是nas的内网地址,这里主要是不想折腾docker里那复杂的网络关系,当然,这么干你得给nas分配一个固定的内网ip。
然后重启
sudo systemctl daemon-reload
sudo systemctl restart docker
然后使用sudo systemctl show --property=Environment docker查看设置的环境变量,理论上应该是你刚刚设定的值。如果正常显示,现在docker pull命令应该可以使用代理了。
评论区