2

我正在尝试使用mergefs和 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/mediaon samba,但它无法通过/mnt/poolon mergerfs

(我可以通过边看边看这在日志中什么都没有显示,而不是docker-compose logs mergerfs等价。)docker-compose exec samba sh -c "echo 'foobar' > /srv/media/test.txt"exec mergerfs

我怎样才能使这个命名卷media成为服务提供的实际文件系统的“代理” mergerfs

4

1 回答 1

3

答案在于绑定传播

特别是,这里的 mergefs 需要media是 atype:bind而不是type:volume,以便可以将其设置为(递归地) ( r)shared绑定传播——这意味着容器配置的挂载将传播回主机。

也就是media:/mnt/pool变成/mnt/media:/mnt/pool:rshared

于 2018-01-13T16:53:23.827 回答