Mount remote share in docker

mamema

Benutzer
Mitglied seit
23. Okt 2009
Beiträge
667
Punkte für Reaktionen
132
Punkte
63
HiHo

Ich habe folgende Anforderung.
Ein Docker Image einer 3rd Party Anwendung auf Synology A benötigt Zugang zu einem Share/Volume auf Synology B
Die 3rd Party App nutzt rsync.

Wie mounute ich das Remote Volume der Synology B in das Docker Image von Synology A?

Danke im Voraus.

Gruss mamema
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Wenn Du jetzt Image durch Container ersetzt passt die Beschreibung :)

Wie mounute ich das Remote Volume der Synology B in das Docker Image von Synology A?

Es gibt zwei Möglichkeiten:

- Ein Docker Volume erzeugen, dass direkt auf den Remote Share zeigt. Geht nur über die Shell - mount/unmount hängt dann am Lebensyklus des Containers. Kann nicht über die Synology Docker UI erstellt werden - wird dort auch nicht angezeigt. Wie startest Du Deine Container? docker run oder docker-compose?

- Remote Share auf Ebene der DS mounten. In der File Station das Remote Share unterhalb eines der Shares mounten und das dann in der Synyology Docker UI in Volumes als Host Pfad verwenden. Ist weniger Stabil bei "Stale Volumes", als die andere Variante.
 

mamema

Benutzer
Mitglied seit
23. Okt 2009
Beiträge
667
Punkte für Reaktionen
132
Punkte
63
Ich bin flexibel. Nutze beides docker run und compose.
Jetzt habe ich Deine Beschreibung zwar verstanden, aber bin etwas unsicher ob ich die mag. :)

Das sollen schon persistent Daten sein auf dem Remote NAS. Nun zieht mir watchtower den Container unterm A* weg und dann?
Ich würde schon die stabilere Variante vorziehen, nur wie bekomme ich das im Detail hin?
1.) Container Update
2. Persistent volume

Wenn ich den Container nach update via Docker run oder compose nochmals erstellen muss, weil das Volume neu "gebaut" werden muss, dann komm ich damit klar.
Du hast nicht zufällig den shell Befehl für das erstellen des volumes und den mount parat......
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Du stellst es Dir komplizierter vor als es ist :)

Die Frage nach `docker run` oder `docker-compose` ging genau darum auf welchem Weg Du das Volume deklarieren willst.
Während man bei `docker run` die Volume-Deklaration vorher mittels `docker volume create` machen muss, kann man das bei docker-compose bequem in der docker-compose.yml Datei machen. Wenn man ein Remote-Backed Volume in Docker löscht, dann wird ausschließlich die Deklaration in Docker gelöscht - Daten auf dem Share werden dabei nicht gelöscht.

Die ' volume create' Variante habe ich nicht parat, müsste ich mal in meinen alten Posts im Docker Forum suchen, die Frage habe ich dort gefühlt etliche Male schon beantwortet. Die docker-compose Variante kann ich direkt aus einer meiner compose.yml's ziehen.

Remoteshare=CIFS oder NFSv4?
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Hier mal die CIFS Variante:

Explizt anlegen über shell für docker run:
Bash:
docker volume create \
    --driver local \
    --opt type=cifs \
    --opt o=username={user auf NAS B},password={user auf NAS B},uid={im Container mounten als UID},gid={im Counter mounten als gid},vers=3.0 \
    --opt device=//NASB/Share \
    mein-share

und dann mit docker run -v mein-share:/pfad/im/container ... verwenden.

Oder vollständig über docker-compose:
YAML:
...
services:
   mein_service:
      ...
      volumes:
      - mein-share:/pfad/im/container
volumes:
  mein-share:
    driver_opts:
      type: cifs
      o: username={user auf NAS B},password={user auf NAS B},uid={lokal mounten als UID},gid={lokal mounte als gid},vers=3.0
      device: //NASB/Share
Wichtig: die Konfiguration eines existierenden Volumes kann nicht geändert werden. Hier hilft nur löschen und mit korrekter Konfiguaration neu anlegen.

Für NFS Shares müssen die Parameter anders aussehen. Ich persönlich verwende NFS v4 statt CIFS, da ich damit seltener Berechtigungsprobleme hatte:

YAML:
volumes:
  mein-share:
    driver_opts:
      type: nfs
      o: addr=192.168.200.10,nfsvers=4
      device: :/volume1/Share/
Anhand das Beispiels solltest Du das auch problemlos auf `docker volume create` mappen können.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: geimist und mamema

mamema

Benutzer
Mitglied seit
23. Okt 2009
Beiträge
667
Punkte für Reaktionen
132
Punkte
63
vielen Dank!
Ich geh auch erstmal den NFS Weg. Ist mir sympatischer im Linux Umfeld. Probier ich aus.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Unbedingt NFSv4 verwenden! Aus Erfahrung kann ich sagen, dass es mit NFSv3 nicht dauherhaft zuverlässig funktioniert.

Die Volume Optionen beim lokalen Treiber (dieser wird hier benutzt), greifen die Paramater von `mount -t ${type}`. Man kann entsprechend weitere Optionen angeben.

Ich habe in den Share - NFS-Berechtigungen:
Hostname oder IP: 192.168.200.0/24 (damit alle Hosts aus diesem CIDR auf den NFS
Squasch: keine Zuordnung
Sicherheit: sys
Asynchron aktivieren: aus
Verbinundung auf nicht privilgierten Ports zulassenn: aus
Benutzern den Zugriff auf bereigtestellte Untererordner erlauben: an

Je nachdem welche Optionen hier ausgewählt sind, kann es sein weitere Optionen bei "o" anzugeben.
 
Zuletzt bearbeitet:


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat