Docker: Verständnisfrage Folder-Mount

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
707
Punkte für Reaktionen
11
Punkte
38
Hallo,

ich habe eine Verständnisfrage zu den Folder-Mounts bei Docker. Ich habe Tomcat8 am laufen um dort geoserver zu betreiben. Ich würde daher gerne meinen DS-Ordneer /docker/tomcat mit dem Docker Ordner /usr/local/tomcat/webapps/ mappen.

Im Ordner /usr/local/tomcat/webapps/ liegen bereits Ordner. Wenn ich die Ordner nun mounte, dann verschwindet der Inhalt von webapps, d.h. Tomcat funktioniert nicht mehr.

Ich bin davon ausgegangen, dass der bereits vorhandene Inhalt in /webapps eben auch nach /docker/tomcat gemountet wird, aber scheinbar funktioniert das eher nach dem Prinzip Einbahnstraße, also alles im Docker wird entfernt und nur was ich auf der DS im Ordnere /docker/tomcat mache, wird auch dorthin verschoben.

Ist das normal? Sollte das so sein? Widerspricht irgendwie meinem Verständnis von einem Folder-Mount.


LG
Felix
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.159
Punkte für Reaktionen
912
Punkte
424
Du redest von einem normalen 'mount' unter Linux, oder dem Ordner Mapping in den Einstellungen des docker containers?
In beiden Fällen dürfte es allerdings gleich sein.
Ein Mount hängt eine Quelle an ein Ziel in der Verzeichnisstruktur. Deren Inhalt wird dort angezeigt. Was vorher am Ziel vorhanden war ist dann solange der mount besteht nicht sichtbar. Das ist schon immer so.

Wenn du also innerhalb des Containers unter /usr/local/tomcat/webapps schon Daten hast musst du diese einmal verschieben und nach dem mount wieder zurück transferieren.
Danach sind sie dann auch auf dem Host unter /docker/tomcat sichtbar, weil sie jetzt real dort liegen und auch bei Container updates erhalten bleiben, da außerhalb gespeichert.
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
707
Punkte für Reaktionen
11
Punkte
38
Moin,

ich rede von den Volume-Einstellungen im Docker-Container.
Dann danke ich dir für die Ausführung.

Gibt es denn noch weitere Varianten, auf Dateien im Container zuzugreifen, außer über die Mounts und die Konsole?

LG
Felix
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.159
Punkte für Reaktionen
912
Punkte
424
Spontan fällt mir keine ein. Die Volume mounts sind denke die bevorzugte Methode
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
707
Punkte für Reaktionen
11
Punkte
38
Aber mit den Volume mounts lässt sich ja nicht bequem auf Dateien zugreifen oder? Bsp. Tomcat: Da muss man eine user.xml editieren nach dem installieren. Wenn man die mounten würde, ist sie ja nicht mehr vorhanden?
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.159
Punkte für Reaktionen
912
Punkte
424
Wenn die schon im image so enthalten ist und nicht erst beim ersten Container-Start (so sollte es sein) angelegt wird, ja. Dann ist das Image schlecht gebaut und man kommt mit den mounts nicht von 'außen' ran.
Auser eben mit Konsole (docker run exec oder wie das war) in den Docker Container zuzugreifen und Daten zu verschieben.
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
707
Punkte für Reaktionen
11
Punkte
38
Ah okay, das heißt man müsste vor dem ersten Start den Ordner mappen/mounten (ist das nun das gleiche?) und hat dann durch die nachträgliche Erstellung die Möglichkeit, das zu bearbeiten?
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.159
Punkte für Reaktionen
912
Punkte
424
Ja, genau. So sollte das sein.

Mappen/mounten... Unterscheidet sich je nach adoku und Sprache. Was der ursprünglich korrekte Term wäre weiß ich grad nicht. Im Zusammenhang mit docker meint es aber immer diese Volume Einbindung.
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
707
Punkte für Reaktionen
11
Punkte
38
Alles klar, dann bin ich ja jetzt für die Zukunft etwas besser gewappnet :) Danke!
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Die Volumes in der Syno UI sind immer "mount binds". Wie Fusion schon geschrieben hat wird dabei eine Quelle über ein Zielverzeichnis gemountet.
Da die Implementierung des OS verwendet wird, kann die Funktion in Docker auch nicht abweichen.

Im Grunde sind "mount binds" auch keine echten Volumes.

In der kommerziellen Welt verwendet niemand wirklich mount binds!
Im Gegensatz zu einem bind ist es bei einem Volume tatsächlich so, dass die Inhalte des Ziels tatsächlich in das Volume kopiert werden, ausser man schaltet das Verhalten explizit ab.

Ein Volume kann man über die CLI anlegen oder in einer docker-compose.yml deklarieren. Wenn man den Treiber local verwendet, kann man nfs/cifs oder ebenfalls bind verwenden.

Hier findest Du ein Beispiel dafür, wie das in der docker-compose.yml deklariert werden kann: https://www.synoforum.com/threads/installing-resourcespace.859/#post-3269
Ressourceplan benötigt nämlich auch Dateien aus dem Volume-Target, die fehlen, wenn man eine Quelle nur per "mount bind" einbindet.
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
707
Punkte für Reaktionen
11
Punkte
38
Super, ich danke für die Ausführung!
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
628
Punkte
484
Darf ich kurz die Zwischenfrage stellen, wie ich denn in einer DSM Instanz, die unter Docker läuft, die Freigaben aus dem Host zugänglich machen kann? Mit Bordmitteln scheint mir das nicht möglich. Oder sehe ich den Wald vor lauter Bäumen etwa nicht?
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.159
Punkte für Reaktionen
912
Punkte
424
Sollte theoretisch eigentlich genauso laufen. Außer Syno hat den DDSM Container irgendwie eingeschränkt.
Host-DS > Docker > Docker Container / DDSM meinst du?

Theoretisch wäre dann ein mount bind / Volume-Einbindung vom /volume1/Freigabe und den Container an selber Stelle denkbar.
Probiere ich mal aus, wenn ich später zu Hause bin um zu sehen wo Syno da die Knüppel reinwirft.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Ich verwende DDSM nicht daher kann ich es nicht ausprobieren. Aus meiner Erinnerung konnte man die DDSM-Container nicht auf dieselbe Art wie "normale" Container verwalten.
Falls das nicht funktionert, kann man im Filemanager nicht einfach CIFS/NFS Remoteshares von der DS einbinden? Von DS zu DS geht das ja normalerweise einfach und vorallem frustfrei :)
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.159
Punkte für Reaktionen
912
Punkte
424
Ja, remote shares gehen auf jeden Fall.
Für den DDSM Fall schaue ich mir heute später noch an.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.159
Punkte für Reaktionen
912
Punkte
424
Wie vermutet kastriert hier Synology den DDSM Container.
Es wird ein gemeinsamer Ordner ala /ddsm/datastore angelegt, der in den Container als /volume1 gemounted wird.
Dort landen auch die im DDSM angelegten Gemeinsamen Ordner.
Aber locker flockig mal mit mound bind dort was unterzuschieben, oder von hand einen Ordner anlegen fruchtet nicht.
Erst mal ad acta von meiner Seite für heute.
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
628
Punkte
484
Danke für deinen Einsatz!
Bestätigt mich zumindest darin, dass ich nicht komplett doof bin. ;)
 

maalik

Benutzer
Mitglied seit
05. Feb 2016
Beiträge
707
Punkte für Reaktionen
11
Punkte
38
Wir sind nie doof! Das sind immer die anderen die doof programmiert haben :D
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.519
Punkte für Reaktionen
404
Punkte
103
Mit den Mount Binds war es irgendwie klar. DDSM ist abgeschottet - schließlich soll ja auch keine verstehen, wie man DDSM als Container betreiben kann... könnte ja sonst jeder auf einer beliebigen Plattform tut.

Sicht das sicht mit dem Filemanager nicht mal Remote Shares mounten lassen? Ergibt doch überhaupt keinen Sinn die funktionalität "herauszuoperieren".
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
628
Punkte
484
Also die FileStation in der Docker Applikation sagt beim Versuch einen Remote Ordner einzubinden folgendes:

Bildschirmfoto vom 2019-06-15 20-02-19.png

Bringt mich auch nicht weiter, denn ich finde keinen Optionen im Host wo ich Privilegien ändern könnte.
 


 

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