不要将 Docker on Mac 的 VMM 切换到 Docker VMM
不要将 Docker on Mac 的 VMM 切换到 Docker VMM

记一次捉虫。

(啊?怎么又让我遇到了奇怪的bug?)


TL;DR

在 Docker Desktop on Mac 的 4.35 版本中,新增了 Docker VMM 这个 Virtual Machine Manager 选项,并被默认启用。

然而在 Docker VMM 下,在宿主机上对于挂载到容器的目录中内容的更改,无法完全同步到容器中。把 Virtual Machine Manager 修改为 Apple Virtualization framework 即可解决。

mikusa 的推荐下,从今年七八月份,我开始使用 immich 管理我使用 nazurin 的这两年间,从各处搜刮的近 80G 的二次元图片。immich 虽然并不完美,但它大抵满足了方便管理二次元图库的需求,最方便的就是它的智能搜索——我可以使用自然语言描述来寻找有我想要的画面的图片,甚至对于一些经典的角色都可以识别(例如miku、asuka)

容我先描述一下整个图片收集和存储的流程:首先使用 nazurin 方便地将图片保存到 OneDrive 中;然后,在 Crontab 中定时执行 Rclone 的 bisync 命令,将 OneDrive 上的图片下载到 Mac mini 中;最后,immich 会自动检测到挂载到其容器上的图片路径中的新文件,并添加到 immich 中显示出来。

就这样,immich 在 M2 Mac mini 上平稳运行了数个月,直到近日,我发现了奇怪的现象。

immich 无法自动检测到新添加的图片了。

这个问题并不少见,因为 Rclone 的 bisync 并不十分稳定,有时候会因为文件冲突等原因同步失败。但是无妨,我通过每天自动执行一次rclone bisync --resync命令解决了这个问题——也就是说,新添加的图片至多需要 24 小时便会出现在 immich 图片库中。

然而,当新添加的图片数日都未出现在 immich 中时,我开始头疼了。


捉虫

0

起初我以为是 immich 自己的 bug。因为 immich 在积极开发和更新中,所以有这个问题或许很正常。我去 GitHub Issues 逛了一圈,没发现相同的问题。我便又去问 mikusa 有没有遇到同样的问题。

但是,坏耶,怎么就我遇到了?

1

运维三板斧:重启,重装,重买。(我自己定义的,逃)

先重启。幸运的是,重启是奏效的,重启过 immich 的确能检测到新添加的图片了。不幸的是,能检测到的仅限于重启前新添加的、未被检测到图片。当重启后又添加了新的图片时,immich 仍无法检测。

再重装。没有效果,遇到的问题同上。

在重装的基础上,我又怀疑这个问题是因为我未使用 immich 推荐的 postgres 镜像所致。然而我经过数次删库、修改数据库参数,皆未果。(这个捉虫思路就有问题吧!为什么要删库啊?难道预示了杂话铺子的未来

重……重买?啊,难道要让我买 M4 Mac mini 吗?

2

显然,三板斧皆未能解决问题。此时我便开始怀疑是 Docker Desktop on Mac 的问题了。

我为什么会直接怀疑这个看起来最稳定的东西?因为运行在 Docker Desktop on Mac 上的 immich 有一个非常明显的、在程序初始化完成后就会遇到的 bug:immich 无法正常显示已使用和未使用的存储空间,除非在 immich 设置中定义了非0的用户存储空间配额。据 immich 的开发者所说,这是 Docker 的 bug,而非 immich 的。

在 Windows 的 Docker 中测试了 immich 之后,并没有复现在 macOS 上的问题。

我开始着手排查……到底该怎么排查啊?我是笨蛋!

总之,最后阅读 immich 的文档,关于 External Libraries 的 Troubleshooting 部分时,看到了检查的思路,即是进入到 immich 容器中,看看挂载的路径是否能被访问。

结果是,挂载路径可以被容器读取,但问题出现在,当我在其中新增文件或文件夹时,容器并不能读取到这个变化,明明是同一个路径,容器内外的变化是不一致的!而且进一步测试后,发现只有新建无法同步,而删除是可以同步的。

宿主机上
与此同时,另一边……

好吧,我完全不知道原理是什么,但至少知道问题所在了。

我大喊着:“帮帮我, ChatGPT 先生!”它回复了我一堆没有帮助的内容,谢谢你。

我开始像无头苍蝇一样翻看着 Docker 的设置项,我发现了华点!


解决

在 Docker Desktop 设置的 General 页面下,Virtual Machine Options 配置项中有个 Docker VMM 选项被选中。我从未更改过这些设置,也就是说,Docker VMM 是默认选项。然而 Docker VMM 后面跟着 BETA 这个单词!

据 Docker 自己描述,Docker VMM 是 Apple Silicon 芯片平台上最高效的虚拟机管理器。

跟随着 Learn more,我查阅了 Docker 的文档,在 Docker VMM 的说明中写着:

Docker VMM is a new, container-optimized hypervisor introduced in Docker Desktop 4.35 and available on Apple Silicon Macs only.

Docker VMM 在 4.35 版本中新推出,还是 Beta 状态,但一经推出就被设置为默认项。看了看右下角,我的 Docker Desktop 版本是 4.36。

将选项修改为 Apple Virtualization framework,问题解决。


苦恼了好几天的问题解决了,开心,我要睡大觉。

评论

  1. 1 周前
    2024-11-30 9:51:24

    immich我也试着部署在我的nas上过,然而群晖这台DS420+性能还是有点弱鸡,部署完了卡在处理图片上了,遂放弃。(另这次是真换了个邮箱hh

    • 店长
      1 周前
      2024-11-30 13:47:32

      毕竟图片内容分析、人脸检测还是挺吃算力的~
      之前想买个群晖这样专业的nas,现在觉得以后自己组电脑+硬盘阵列+开源软件的解决方案也还不错。
      (然而我其实没有大量数据私有存储的需求,计划无限期搁置中……)

      • 1 周前
        2024-11-30 20:03:34

        是这样的,不过这个需求倒也没这么强烈,翻看过去的照片也是一种快乐,按顺序浏览也不错,所以普通的相册功能就能满足要求了。查找素材我更喜欢是按照自己的习惯分门别类放好,我用的是eagle

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
颜文字
2233娘
kumiko
蛆音娘
原神
上一篇
Copyright © 2024 桜庭夜 | 杂话铺子
Theme Argon