【问题标题】:Share volume between compose containers, with one of them providing its filesystem?在撰写容器之间共享卷,其中一个提供其文件系统?
【发布时间】:2018-05-30 15:30:16
【问题描述】:

我正在尝试使用 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:

问题是,虽然我可以在samba 上读取/写入/srv/media,但它无法通过mergerfs 上的/mnt/pool

(我可以通过观看docker-compose logs mergerfs 来查看这一点,同时执行docker-compose exec samba sh -c "echo 'foobar' > /srv/media/test.txt",它不会在日志中显示任何内容,而对应的exec mergerfs执行。)

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

【问题讨论】:

    标签: docker filesystems docker-compose fuse moby


    【解决方案1】:

    答案就在bind propagation

    特别是,这里的mergefs需要media成为type:bind而不是type:volume,这样它就可以设置为(递归地)(rshared绑定传播——这意味着挂载容器配置的会被传播回宿主机。

    media:/mnt/pool 变为/mnt/media:/mnt/pool:rshared

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-19
      • 2018-06-27
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多