收起左侧

飞牛 fnOS 升级到 1.2.0302 后 Docker 不可用:现象、根因与解决办法

0
回复
45
查看
[ 复制链接 ]

1

主题

8

回帖

0

牛值

江湖小虾

ARM 飞牛 fnOS 升级到 1.2.0302 后 Docker 不可用:现象、根因与解决办法

适用:fnOS 升级后 Docker 异常。以下修复命令均需在飞牛「终端」或 SSH 中以管理员权限执行(带 sudo)。

注意我的设备是某RK3566 T (arm fnos),以上只是本人升级到1.2.0302遇到问题,由于全部分析与修复过程AI完成,没有实际操作,贴出解决办法供大家参考。


故障一:升级后 Docker 起不来,所有容器停止

现象

  • 飞牛 Docker 客户端报错或打不开,所有容器变成停止状态。
  • systemctl status docker 显示 failed,关键报错:
    ExecStart=/usr/bin/dockerd ... status=203/EXEC + No such file or directory
  • 客户端界面有时还能打开(飞牛 Docker 是「客户端层 + 引擎层」两层架构,客户端依赖的 dockermgr 仍在跑)。

根因(与权限无关!)

  • fnOS 升级到 1.2.0302 时,把 4 个 docker 包卸掉了:
    docker-ce / docker-ce-cli / docker-buildx-plugin / docker-compose-plugin
  • 导致 /usr/bin/dockerd 二进制文件缺失 → systemd 启动时报 203/EXEC。
  • ⚠️ 很多人误以为是权限问题,其实不是。203/EXEC + "No such file" 是文件不存在,不是 Permission denied。

修复

# 1. 先看自己该装哪个版本(匹配系统里残留的 rootless-extras 版本)
dpkg -l | grep docker-ce-rootless-extras
apt-cache madison docker-ce          # 列出源里可用版本

# 2. 解除 hold(部分环境这俩被标记 hold,不解除 apt 会 "keep back" 装不上)
sudo apt-mark unhold docker-ce docker-ce-cli

# 3. 钉版本重装(关键!不要无版本装,否则源默认会装到更新的版本,
#    与残留的 containerd / rootless-extras 版本错位,埋新坑)
sudo apt-get install -y --allow-downgrades \
  docker-ce=5:29.1.1-1~debian.12~bookworm \
  docker-ce-cli=5:29.1.1-1~debian.12~bookworm \
  docker-buildx-plugin docker-compose-plugin
#   ↑ 上面的 29.1.1 是我的环境版本,请替换成你自己第 1 步查到的版本

# 4. 重启
sudo systemctl restart docker
sudo systemctl restart dockermgr
sleep 30

验证

  • sudo docker ps -a → 原有容器应回到 Up
  • sudo docker version → Client / Server 版本号应一致
  • 飞牛 Docker 页面容器列表恢复

可逆性:本操作只 apt install + restart,无任何格式化/刷机级命令。容器数据在 /var/lib/dockerapt 不会动它,修复不可逆风险极低。若想万无一失,重装前先拍快照:sudo btrfs subvolume snapshot / /root/snap-before-dockerfix


故障二:Docker 修好后,Web UI 不显示 CPU / 内存 / 网速

现象

  • 容器能正常跑,但飞牛 Docker 页面里各容器的 CPU 占比、内存占用、网络收发网速三项全空白

排障第一步:确认是不是引擎层问题

sudo docker stats --no-stream
  • 有数据(CPU% / MEM / NET I/O 都正常)→ 问题在飞牛 UI 中间层,看下面根因。
  • 无数据 → 说明 dockerd 还没真正起好,回到故障一检查。

根因

  • 飞牛有个「Docker 流服务」dsmgr.service,负责把容器实时监控实时推给 Web UI
  • 它在开机时(那时 dockerd 还不存在)就启动了,建了一条失效的 stats 流;该服务进程没退出就不会自动重启,dockerd 恢复后它也不会重连 → 这条死连接一直挂着,于是三项监控全空白。

修复(一行)

sudo systemctl restart dsmgr

然后浏览器硬刷新飞牛 Docker 页面(Mac Cmd+Shift+R / Win Ctrl+Shift+R)清前端缓存。

  • 若仍空白,再补一句:sudo systemctl restart dockermgr

通用排障顺序(建议收藏)

  1. systemctl status docker → 看是不是 203/EXEC(文件缺失,走故障一)
  2. sudo docker stats --no-stream → 引擎层有数据但 UI 空白(走故障二)
  3. 多数「升级后 Docker 挂了」本质都是包被卸,不是配置炸了,优先 dpkg -l | grep docker 看包状态。

一句话总结:升级后 Docker 全停 = 包被卸,钉版本重装即可;装好后监控空白 = dsmgr 死流,重启它 + 硬刷新即可。两个都低风险、可逆。

收藏
送赞
分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则