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 down再up后,文件还会保留。 - 整个过程没有任何报错信息,完全不知道问题出在哪。
我已经自行排查了这些点:
- 宿主机上
/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




