5种方法,解决docker无法使用问题,带着你的NAS终极突围,全网最全攻略
大家好,这里是Cherry,喜爱折腾、捡垃圾、玩数码,热衷于分享NAS、docker玩耍经验~
前言
docker是NAS生态中必不可少的一个环节,作为一个NAS用户,一旦docker无法使用,那NAS的作用几乎可以失去80%。
近期,因docker被处理的问题,导致越来越多的NAS玩家开始寻找突围的办法。所以Cherry也花了好几天时间,收集并整理网上各种各样的方法,今天,将目前收集到的5种解决方案一一道出,并为每种解决方案提供1个例子供大家参考。
目录
方案一:修改hosts
方案二:公共镜像库
方案三:自建加速(镜像)库
方案四:docker proxy
方案五:离线安装
方案一:修改hosts
本次docker被处理,本质上是处理了cloudflare的连接,使用的是SNI阻拦+DNS污染。而SNI阻拦部分地区因为运营商的关系,省域强度会小一些,基本上修复DNS污染就可以正常访问(注意,是小部分地方,该方法并不适用)。
SNI阻拦涉及核心功能,基本上就是域前置、本地反代、http回流、HTTPSv2/v3等方法绕过,视服务商不同有所区别,这个不方便介绍,自行搜索。而DNS污染就简单很多了,修改Hosts即可,我们可以通过CF优选等工具将docker相应的网站指定DNS解析后,我们就可以恢复下载。
通过SSH连接到NAS,然后在root全县辖修改NAS的hosts(路径/etc/hosts),最后增加一行【ip 域名】这样的格式,设置完成以后按下ESC退出编辑模式,然后输入【:wq!】保存

方案二:公用镜像库
公共镜像库目前可能是唯一比较方便和实用的方法了,虽然主流的公共镜像库都因为ZC原因下架了,但是依旧会有一些小型乃至个人镜像库供大家实用,但是镜像库的缺点很明显,那就是库内的镜像不全,需要和管理者去申请补充。
这里介绍一些github上的镜像库项目,可以查看可用的镜像库,目前主流的基本上是daocluod这个镜像库了。
项目一(镜像):kubesre/docker-registry-mirrors
项目二(镜像):sky22333/Docker-Hub
项目三(代理):wzshiming/crproxy

使用方法,也很简单
威联通——【Container Station】——【存储库】——【添加】,填写镜像URL地址。拉取镜像的时候选择设置好的镜像库即可。

群晖——【Container Manager】——【注册表】——【设置】——【新增】,填写镜像URL地址后勾选使用。

方案三:自建加速(镜像)库
刚才提到的公用镜像库之外,还有一种方式就是自建自己使用的个人加速(代理)库,好处就是不需要本地存储镜像,而是通过加速的方式实现镜像下载。
1、基于阿里云申请
这个方法@Stark-C大佬写的很清楚了,这里就不赘述了,直接给大家指路大佬文章。
2、基于VPS部署
需要海外VPS一台,而且方法多是多样,比如nexus3、harbor、nginx反代等等,这里就不赘述了,今天介绍一款支持一键部署的项目。
项目地址:https://github.com/dqzboy/Docker-Proxy
自建Docker镜像加速服务,基于官方registry一键部署Docker、K8s、Quay、Ghcr镜像加速、管理服务。
# 安装wget和cul,红帽系使用yum,debian系使用apt
apt(yum) -y install wget curl
# 一键安装
bash -c "$(curl -fsSL https://raw.githubusercontent.com/dqzboy/Docker-Proxy/main/install/DockerProxy_Install.sh)"
3、基于CF workers部署
秉持着能白嫖绝对不付钱的想法,我们可以采用cloudflare workers来作为加速源,配合CF优选实现快速链接。
PC端 :
windows下打开PowerShell,输入以下指令安装pnpm
iwr https://get.pnpm.io/install.ps1 -useb | iex

从github下载代码包,解压到桌面即可

CloudFlare端:
进入【Workers 和 Pages】,新创建一个workers应用程序

点击【创建Workers】,下一步,随便取名,如docker为前缀

选择【wrangler.toml】并确认

回到【概述】,复制最右侧的“account_id”

PC端:
将wrangler.toml.sample修改为wrangler.toml,打开并更改文件中的name和account_id,name可以用刚才申请的docker,账号id就是刚才复制的,然后保存。

重新打开PowerShell
# 来到压缩包目录,这个路径根据自己的调整
cd C:UsersEQ59DownloadsCompressedhammal-main
# 安装依赖
pnpm install
# 登录cf
npx wrangler kv:namespace create hammal_cache
会自动转跳到浏览器进行cf认证

复制返回的kv ID

然后继续修改wrangler.toml文件,填入红框内

然后继续在PowerShell里输入pnpm run deploy部署到cf端,完成后可以在CF workers里查看是否部署成功

然后我们点击【设置】,选择【触发器】,选择【自定义域】,填入托管在CF的域名下任意二级域名确认即可。

NAS端:
以群晖为例,设置默认的【Docker Hub v1】,新增注册表镜像,选择我们刚才设置的自定义域名确认即可。

已经可以正常拉取镜像了,但是速度稍微会慢一点,但是总比没有好,可以通过优选CF,参照方案一在NAS里修改hosts来提速。

CF的流量也可以看得清清楚楚

方案四:docker proxy
该方法使用docker自带的proxy工具,解决部分网友赛老师后依旧无法拉取镜像的问题。
使用ssh工具登录NAS,以此输入以下指令
# 首先请登录root,群晖使用sudo -i,其他NAS默认root,创建proxy配置文件
mkdir -p /etc/systemd/system/docker.service.d
touch /etc/systemd/system/docker.service.d/proxy.conf
# 修改proxy配置文件
vim /etc/systemd/system/docker.service.d/proxy.conf
# 将以下代码复制进去,然后根据自己的情况修改,192.168.0.100为NAS IP
[Service]
Environment="HTTP_PROXY=http://192.168.0.100:7890/"
Environment="HTTPS_PROXY=http://192.168.0.100:7891/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
# 完成以后按ESC,输入:wq!保存并退出
# 重新读取daemon
systemctl daemon-reload
# 重启docker或重启NAS,比如群晖是无法使用以下指令的,直接重启NAS即可
systemctl restart docker
重启docker以后,在ssh页面输入docker info查看是否有红框内代码,有的话说明成功了,可以自由拉去镜像了

方案五:离线安装
如果以上方法你都没有办法,那我们还有最后一条路,离线安装docker,该方案让互联网共享精神再次伟大!
正如古希腊掌管光盘的神、21世纪SSD硬盘掌控者、神秘的地铁风衣男、走遍大街小巷的资源售卖大师所说:哪里有需要,哪里就有光盘。
我们可以寻找一些可以获取image资源的小伙伴,让他们通过ssh将资源导出给我们,然后我们再导入到本地使用。如果只是拷贝镜像的,只需要使用docker save 和docker load就可以了
【docker save 与 docker load】,基于已有的镜像导出
# 将名为【XXX/images:tag】的镜像,导出为到路径【/home】下的【image.tar】压缩包
docker save XXX/images:tag -o /home/image.tar
# 将路径【/home】下名为【image.tar】的压缩包导入
docker load -i /home/image.tar
#### 查看docker 镜像,找到最近导入的镜像
# 该指令自行查找导入镜像
docker images
# 该指令按导入时间排序
docker images --format "{{.ID}}t{{.CreatedAt}}" | sort -k 2 -r
# 将导入的镜像ID为【abcd123456789】的镜像,重命名为【XXX/images:tag】
docker tag abcd123456789 XXX/images:tag
【docker export 与 docker import】,基于已有的容器导出
# 将名为【container】的容器,导出为到路径【/home】下的【image.tar】压缩包
docker export container -o /home/image.tar
# 将路径【/home】下名为【image.tar】的压缩包导入,并改名为【XXX/images:tag】
docker import /home/image.tar XXX/images:tag
我的NAS推荐
这里简单介绍一下Cherry日常使用的几台NAS,以及为何选择这些NAS。
核心设备——群晖 DS920+
这是Cherry第一台NAS,服役了好多年了,经典的J4125cpu+24G内存,搭配517实现9块18T盘塞满,主要用来玩玩PT的,日常使用的docker和个人资料,基本都存放在这里,因此也是Cherry感情最深的一台设备,但是J4125的性能瓶颈就在这里,容器多了cpu常年90%徘徊,在部署新项目的时候特别不方便。
二代目核心设备——威联通QNAP TS-464C2
正因为前面提到群晖920服役时间过长问题,Cherry在入手了一台N5105的软路由后,又将目光看向了搭配同时期N5095的QNAP464C2,作为NAS届的常青树,QNAP的系统其实一直是Cherry所喜爱的,相比于群晖,威联通的系统更值得深入使用和思考,功能点更丰满。
生产NAS——自建Unraid
回到项目生产中,考虑在项目部署过程中,经常会出现启动错误、容器异常、版本迭代等问题,这些问题统统需要强大的cpu和多线程来解决,因此就使用双路洋垃圾组建了一台unraid,用于生产环境使用,也是我的项目部署主力机。


欢迎朋友们评论区讨论留言。我会定期更新关注NAS使用方法、开源软件与Docker软件、游戏与生活相关内容,喜欢的朋友请关注、点赞、留言支持。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案