一、问题描述
由于国内的docker已经被管控,直接在群晖NAS的docker面板上是无法直接查询到需要的docker镜像内容,我们需要通过SSH连接到群晖使用docker命令进行拉取镜像使用,如下图所示:
注意:若要通过SSH连接群晖NAS则需要检查群晖NAS的SSH是否启用,若没有启用则需要勾选启用,否则无法连接,如下图所示:
在2024-06-01日以前,使用SSH登录后是可以直接拉取docker镜像的;但是之后当我们使用SSH登录上群晖NAS,使用【sudo -i】切换到超管拉取镜像会提示报错【error pulling image configuration: Get "https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/cf/cff6b68a194a672fd337d8728bfb252071012cce6f0f2ed760988f7bc63a89d2/data?verify=1718090409-0EkmLisDaR3HibNZ79qo%2F9ghPbU%3D": dial tcp [2a03:2880:f10a:83:face:b00c:0:25de]:443: i/o timeout】如下图所示:
在Windows中通过Putty连接Linux、通过pscp传输文件到Linuxhttps://blog.csdn.net/xiaochenXIHUA/article/details/118067326?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171808970316800182771998%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171808970316800182771998&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-5-118067326-null-null.nonecase&utm_term=SSH&spm=1018.2226.3001.4450
二、问题分析
通过拉取镜像的错误信息可以知道是由于IO超时导致无法拉取;也就是说目前群晖自带的docker镜像加速器应该是失效了【我们可以通过给群晖NAS的docker配置文件配置上对应的docker镜像加速器地址;然后重启docker就可以了】。
三、解决方法
3.1、查看群晖NAS的docker配置文件
# 编辑群晖NAS的docker配置文件
vi /var/packages/Docker/etc/dockerd.json
群晖NAS的docker默认配置文件是没有docker镜像加速器的,如下图所示:
3.2、获取docker镜像加速器
序号 | docker镜像加速器名称 | 是否可用 | docker镜像加速器地址 |
1 | 申请自己的阿里云镜像加速器 | 可用 | 这是申请阿里云docker镜像加速器的地址【容器镜像服务 (aliyun.com)】 |
2 | 中科院软件所镜像站 | 可用 | https://mirror.iscas.ac.cn |
3 | 微软云 | 暂不可用 | https://dockerhub.azk8s.com |
4 | 网易 | 暂不可用 | https://hub-mirror.c.163.com/ |
5 | 腾讯云 | 暂不可用 | https://mirror.ccs.tencentyun.com/ |
6 | 上海交通大学 | 暂不可用 | https://mirror.sjtu.edu.cn/docs/docker-registry |
7 | 南京大学 | 暂不可用 | https://docker.nju.edu.cn |
8 | DaoCloud | 可用不稳定 | https://docker.m.daocloud.io |
9 | docker代理 | 暂不可用 | https://dockerproxy.com |
3.3、配置群晖NAS的镜像加速器
我这里使用【自己的阿里云】和中【科院软件所】这2个可用的docker镜像加速地址:
1、编辑群晖NAS的docker配置文件【vi /var/packages/Docker/etc/dockerd.json】
2、打开群晖NAS的docker配置文件后按下键盘的【i】键移动光标编辑,如下图所示:
3、按下键盘的【ESC】键退出文件编辑模式,然后输入英文【:wq!】强制保存退出命令后按下Enter键即可;
{
"data-root" : "/var/packages/Docker/target/docker",
"log-driver" : "db",
"registry-mirrors" : ["https://mirror.iscas.ac.cn/"],
"storage-driver" : "btrfs"
}
4、配置完成docker的配置文件后可以查看一下当前群晖的docker信息,如下图所示:
docker info
3.4、 重启群晖docker
建议直接在群晖NAS的web管理界面进行重启docker,具体操作如下:
1、打开docker管理界面,将所有的容器内容停止
注意:有一些docker内容是无法直接在docker管理界面停止的,docker界面也会弹出对应的提示,此时我们只需要打开【套件中心】,搜索对应的程序,然后点击对应程序的【停止】按钮等待停止完成即可。
2、等所有的容器内容停止完成后,在打开【套件中心】-->搜索docker后点击【停用】,如下图所示:
3、等docker停用后稍等1分钟后再点击【启动】,如下图所示:
也可以直接使用命令重启群晖NAS的docker(不建议)
synoservice --restart pkgctl-Docker
3.5、测试配置的docker镜像加速地址是否有用
我这里使用拉取postgres数据库测试,拉取命令如下:
docker pull postgres
拉取后的效果如下:
最后使用SSH操作完成后,为了安全起见,需要将群晖NAS的SSH关闭掉: