我正在尝试使用mergerfs和samba设置一些dockerised NAS:
services:
mergerfs:
build: ./mergerfs # just debian and install latest release
cap_add:
- SYS_ADMIN
devices:
- /dev/fuse:/dev/fuse
volumes:
- media:/mnt/pool
- /mnt/data0:/mnt/data0
...
...
samba:
image: dperson/samba
command: -s'media;/srv/media;yes;no;yes' # guest allowed, not RO
volumes:
- media:/srv/media
depends_on:
- mergerfs
...
volumes:
media:
问题在于,虽然我可以在/srv/media
上读/写samba
,但却无法通过/mnt/pool
上的mergerfs
。
(我可以通过在docker-compose logs mergerfs
执行docker-compose exec samba sh -c "echo 'foobar' > /srv/media/test.txt"
时看到这一点,而exec mergerfs
在日志中没有显示任何内容,而 的等效media
。)
如何使此命名卷mergerfs
仅仅成为A, B, C
服务提供的实际文件系统的“代理”?
答案 0 :(得分:1)
答案在于bind propagation。
特别是,这里mergerfs需要media
而不是type:bind
,因此可以将其设置为(递归)(type:volume
){{绑定传播 - 这意味着容器配置的挂载将传播回主机。
也就是说,r
变为shared
。