Skip to content

NAS折腾日记3

Published: at 00:00
· 阅读约 5 分钟

导火索

上一篇把自动化追番流水线搭好了,就想着通过Vibe coding设计一套自动化总结文献的流程

但是代码怎么改都不满意,然后整个人就魔怔了,疯狂用命令行肘击docker,然后鬼脑上头,为什么不直接用命令行来控制docker呢,然后就安装了docker-compose

使用apt包管理器,然后灾难发生了

Docker 管理面板直接整个灰了。整个模块显示”未知错误”。

Docker面板变灰了

天都塌了,看到这个我就知道今晚有的忙了

排查

然后就是连忙 SSH 连上 NAS,看看容器还在不在:

docker ps

还好,容器都还在跑。又试了试 docker images,镜像也都在。

松了一口气。心想这不正好吗——本来装 docker-compose 就是为了用命令行管理容器,飞牛面板挂了就挂了,CLI 又不是不能用

然而好景不长。试着拉了一个新镜像,结果死活拉不下来,一直超时。想着应该是 Docker Hub 在国内的访问问题,顺手加了几个镜像加速源,顺便按网上教程调了一堆 daemon 配置。

改完之后重启 Docker 服务,习惯性敲了 docker images——

IMAGE   ID             DISK USAGE   CONTENT SIZE   EXTRA

空了

ani-rss、qBittorrent、Jellyfin、AstrBot、lucky……之前辛辛苦苦拉的那一堆镜像,一个不剩,干净得像刚装完系统。docker ps 也空了,容器全没了。

然后我打开Gemini,把报错一股脑贴进去,绝望地肘击哈基米,疯狂追问”怎么恢复”、“怎么修复”、“镜像去哪了”。

Gemini 也很配合,给了一堆操作——卸载重装 Docker、清理残留配置、重建网络、重启 daemon……我一个一个照着敲,越敲越不对劲。每执行一步,问题不但没解决,反而更糟了。Docker 服务开始启动失败,systemd 日志里红的绿的搅在一起完全看不懂。

搞到最后只能重装了

破局

事情发展到这个地步,我已经冷静下来了

再次确认过容器还在运行,我做出了一个选择,没有选择重装系统,而是继续思考症结所在

最后我抓住了问题的关键,去哪找到飞牛系统绑定的docker路径?

为了得到这个答案,我开始查找fnos的论坛,我相信绝对有不少人出过问题

果不其然,我找到了,一位提问者的回复下面,有人给出了飞牛的默认配置

破局

那现在要做的就很明确了:重新安装 Docker,然后把飞牛面板指向正确的路径。

赎罪

有了飞牛的默认配置,就知道该往哪走了。现在要做的就是三步:用正确的姿势重装 Docker、注入飞牛的数据目录配置、让面板重新认到 Docker。

第一步:通过 apt 重装 Docker(这次用阿里云镜像加速)

上次一把梭 apt install docker-compose 翻车了,这次老老实实走标准 Debian 流程:

# 安装前置依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

# 导入 Docker 官方 GPG 密钥(走阿里云镜像)
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# 写入 Docker 软件源
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://mirrors.aliyun.com/docker-ce/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker 全家桶
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin

注意最后一行——这次装的是 docker-compose-plugin,不是那个独立的 docker-compose 包。它是 Docker CLI 的插件,通过 docker compose 子命令调用,不会引入额外的依赖冲突。

第二步:注入飞牛的默认配置

Docker 装好了,但默认的 daemon.json 是空的。得把飞牛原来的配置写进去,让它知道数据该存哪、镜像从哪拉:

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "data-root": "/vol1/docker",
  "live-restore": true,
  "log-driver": "json-file",
  "log-opts": {
    "max-file": "5",
    "max-size": "100m"
  },
  "proxies": {},
  "registry-mirrors": [
    "https://docker.fnnas.com",
    "https://registry.hub.docker.com",
    "https://docker.1ms.run"
  ]
}
EOF

配好之后载入新配置并启动:

# 载入新配置并启动
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

其实到这里,飞牛的docker主页已经正常了

反思

冷静下来复盘,整个过程可以说是一连串的错误决策叠加出来的灾难。

最主要的问题,也是最大的问题

我为什么没备份?

飞牛系统本身就带快照功能,我却没有实现进行备份

甚至没想到

要是有一张快照,从发现问题到解决大概只需要五分钟——回滚,重启,完事。而不是像个无头苍蝇一样折腾了一整晚,把系统从”面板认不到 Docker”一路搞到”系统里没有 Docker”,再灰溜溜地从零装回来。

不得不多熬了两个小时的夜来处理这个问题,只能说在这方面的管理,我的水平还有待加强…

先写这么多了,困死了


下一篇文章
NAS折腾日记2