Appearance
解决 Docker 镜像无法下载问题
很多朋友安装 Docker 应用的时候出现下载失败问题。想解决这个问题通常有两种办法,第一种是设置代理,比如在主路由或者旁路由上配置代理,可以让拉取 docker 镜像是通过代理加速。第二种是直接使用镜像加速器。
设置代理
关于在 Unraid、群晖上如何安装 iStoreOS 主路由,旁路由,此前我已经写了几篇相关的教程,可以按需参考:
- 适用于
Unraid:一文搞定 Unraid 安装软路由 - 适用于
群晖:安装旁路由
安装好 iStoreOS 之后,可以很方便的安装相关代理插件,配置好自己节点之后就可以正常拉取镜像了。
镜像加速器
使用镜像加速器可以有效解决 Docker 下载失败问题。目前可以用的镜像加速列表如下:
sh
https://docker.rainbond.cc
https://hub.1panel.dev
https://docker.1ms.run
https://docker.nju.edu.cn
https://docker.mirrors.sjtug.sjtu.edu.cn
https://docker.itelyou.cf
https://docker.registry.cyou
https://docker-cf.registry.cyou
https://dockerpull.com
https://dockerproxy.cn
https://docker.1panel.live
https://hub.rat.dev
https://dhub.kubesre.xyz
https://docker.hlyun.org
https://docker.kejilion.pro
https://registry.dockermirror.com
https://docker.chenby.cn
https://ccr.ccs.tencentyun.com
https://hub.littlediary.cn
https://hub.firefly.store
https://docker.nat.tf
https://hub.crdz.gq
https://noohub.ru
https://docker.nastool.de
https://hub.docker-ttc.xyz
https://freeno.xyz
https://docker.hpcloud.cloud
https://dislabaiot.xyz
https://ginger20240704.asia
https://doublezonline.cloud
https://dockerproxy.com群晖
注意
最近群晖 Docker 注册表提示出错,原因是 auth.docker.io 被屏蔽。

目前通过命令拉取镜像正常,建议使用教程末尾的方法拉取 Docker 镜像。
群晖仅支持为 Docker Hub 的镜像添加加速地址。对于其它仓库 (比如 Github)的 Docker 镜像,则需要
手动替换为加速地址后再拉取。比如:ghcr.io/ggerganov/llama.cpp:full,则需要将ghcr.io替换为加速地址之后,通过命令行手动拉取。
打开 Container Manager,在 注册表 -> 设置 中编辑名为 Docker Hub(v1) 的条目。

选中 启用注册表镜像,点击 新增,填写镜像加速地址,并应用。

之后在 套件中心 先 停用 Container Manager,再 启动,镜像加速地址就可以生效。

Unraid
打开 Unraid 的 终端,将下面命令中的 xxxx 替换为镜像加速地址之后再执行(可同时添加多个地址):
sh
mkdir -p /etc/docker;
tee /etc/docker/daemon.json <<- EOF
{
"registry-mirrors": [
"xxxx",
"xxxx",
]
}
EOF之后到 设置 -> Docker 中先将 启用 Docker 设置为 否,点击应用:

之后再设置为 是,再次点击应用,加速镜像地址即可生效。
解决重启失效问题
Unraid 重启之后,/etc/docker/daemon.json 会被清空。可以将上面的命令添加到 /boot/config/go 文件中来实现开机自动执行。
- 方法 1:
打开 Unraid 终端,使用 nano boot/config/go 命令编辑 go 文件。将上面的命令粘贴到 go 文件末尾,Ctrl + X 保存,输入 Y 确认退出。
- 方法 2:
在 Unraid 主界面中,点击引导设备 Flash,打开引导设备的 SMB,通过电脑上的文本编辑器编辑 go 文件,将上面的命令粘贴到 go 文件末尾,保存退出。
Unraid 移除加速镜像
如果不想使用加速镜像地址,可以把 /etc/docker/daemon.json 这个文件删除,把 boot/config/go 中添加的命令删除,然后重启 Docker 服务。删除文件可以用下面这个命令:
sh
rm -rf /etc/docker/daemon.json使用命令拉取镜像
使用 SSH 登录 NAS,切换到 root 用户。
以 amilys/embyserver 为例,正常情况下使用下面的命令拉取镜像:
sh
docker pull amilys/embyserver如果镜像加速地址为:https://docker.1panel.live,则使用下面的命令通过镜像加速来拉取镜像:
sh
docker pull docker.1panel.live/amilys/embyserver通过 Compose 安装 docker
如果你不想通过命令拉 docker 镜像,你可以直接通过 Compose 来安装 docker,需要在 Compose 的 yml 配置文件中设置好带有镜像加速地址的镜像地址。以 memos 为例:
yml
name: memos
services:
memos:
restart: always
container_name: memos
ports:
- 5230:5230
volumes:
- ./data:/var/opt/memos
image: docker.1panel.live/neosmemo/memos:stable这里用到的镜像加速地址是:docker.1panel.live。通过 Compose 就不需要手动拉镜像了,Compose 会根据配置文件自动从给定的地址拉镜像。
常用的 Compose 配置模板可以看这里:Docker Compose 模板。