2017-12-16 10 views
0

Ich Setup versucht, einige NAS dockerised, mit mergerfs und Samba:Freigeben von Volume zwischen Compose-Containern, wobei einer von ihnen sein Dateisystem bereitstellt?

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: 

Das Problem ist, dass, während ich/schreiben zu /srv/media auf samba lesen kann, ist es nicht durch auf mergerfs-/mnt/pool bekommt .

(Ich kann das sehen docker-compose logs mergerfs durch die Beobachtung während docker-compose exec samba sh -c "echo 'foobar' > /srv/media/test.txt" tun, die nichts in Protokollen zeigt, im Vergleich zu dem äquivalenten exec mergerfs die der Fall ist.)

Wie kann ich das benannte Band machen für media sein ein bloßes ‚Proxy‘ das tatsächliche Dateisystem, das vom mergerfs Service zur Verfügung gestellt wird?

Antwort

0

Die Antwort liegt in bind propagation.

Insbesondere hier mergerfs Bedürfnisse media a type:bind sein, anstatt type:volume, so dass sie eingestellt werden können, haben (rekursiv) (r) shared bind Ausbreitungs - was bedeutet, dass durch den Behälter konfiguriert Halterungen zurück fortgepflanzt werden wird der Gastgeber.

Das heißt, media:/mnt/pool wird /mnt/media:/mnt/pool:rshared.

Verwandte Themen