You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Docker Compose挂载NAS目录异常求助(Immich部署场景)

Docker Compose挂载NAS目录异常求助(Immich部署场景)

大家好,我在部署Immich时碰到了一个NAS目录挂载的棘手问题,折腾半天没找到根源,来求各位大佬帮忙分析下!

先交代下环境:我用的是Ubuntu Server 22.04.3 LTS,通过Docker Compose部署Immich服务。

我的docker-compose.yml里的挂载配置片段如下:

volumes:
  - ${UPLOAD_LOCATION}:/usr/src/app/upload
  - /etc/localtime:/etc/localtime:ro
  - /data/NAS_Photos:/mnt/NAS_Photos:ro   # <-- 就是这个挂载出问题了

我的需求很明确:把宿主机上的/data/NAS_Photos目录以只读方式挂载到容器内的/mnt/NAS_Photos路径下。

但实际运行后出现了奇怪的现象:

  • 容器启动后,内部确实存在/mnt/NAS_Photos目录,但在容器内执行mount | grep -i mnt时,得到的结果是:
    none on /mnt/NAS_Photos type tmpfs (ro,relatime,inode64)
    
  • 这个目录几乎是空的,完全没有宿主机/data/NAS_Photos里的内容,只有之前调试时留下的几个残留文件;更诡异的是,就算我把容器内的挂载路径改成其他位置,这些残留文件也会跟着出现在新路径里,甚至执行docker compose downup后,文件还会保留。
  • 整个过程没有任何报错信息,完全不知道问题出在哪。

我已经自行排查了这些点:

  • 宿主机上/data/data/NAS_Photos的权限都设成了777,所属用户是我自己的用户;
  • 如果把挂载目录换成docker-compose.yml所在目录下的本地文件夹,挂载是完全正常的;
  • 执行docker inspect -f '{{ .Mounts }}' immich_microservices查看容器挂载信息,输出显示配置是生效的:
    [{bind  /home/mark/Immich/library /usr/src/app/upload  rw true rprivate} {bind  /etc/localtime /etc/localtime  ro false rprivate} {bind  /data/NAS_Photos /mnt/NAS_Photos  ro false rprivate}]
    

有没有大佬知道这是啥原因导致的?或者有没有什么调试方法能帮我定位问题?万分感谢!

备注:内容来源于stack exchange,提问作者Mark Smith

火山引擎 最新活动