Volume aus existierendem Container erstellen
Manchmal bietet der Container nicht die Möglichkeit, ein Volume vor dem ersten Start zu erstellen. Setzt man das Volume dennoch, bleibt das Verzeichnis leer und die Anwendung meldet einen Fehler, z. B. dass sie nicht in das Verzeichnis schreiben kann, auf das das Volume gemountet ist.
Man kann existierende Ordner aus laufenden oder gestoppten Containern heraus kopieren. Dafür ist es notwending den Container einmal zu starten und die Anwendung vollständig hochfahren zu lassen.
- Starten des Containers mit der entsprechenden Anwendung
- Sofern die Anwendung läuft und alle allgemeinen Einstellungen vorgenommen wurden, den Container stoppen
docker stop [CONTAINER_NAME]
- Nun das Verzeichnis aus dem Container an einen beliebigen Ort kopieren, z. B. in den Ordner der docker-compose.yml-Datei
docker cp [CONTAINER_NAME]:/pfad/zum/ordner/oder/datei .
- Da der Zugriff auf die Ordner und Dateien oftmals über einen gesonderten Benutzer und Gruppe erfolgen, muss die Berechtigung nun ermittelt werden
Hier werden nun die enthaltenen Dateien und Ordner angezeigt. Beim Aufruf des Befehls "ls" wird der Parameter "n" übergeben, damit die User-ID und die Gruppen-ID angezeigt werden. Diese können sich auf dem Host-System unterscheiden, weshalb wir nicht den Namen benötigen.docker exec [CONTAINER_NAME] ls -lsan /pfad/zum/ordner/oder/datei
total 184 4 drwxr-xr-x 15 33 0 4096 May 25 17:24 . 4 drwxrwxr-x 1 33 0 4096 May 29 03:57 .. 4 drwxr-xr-x 43 33 0 4096 May 25 17:24 ordner1 20 -rw-r--r-- 1 33 0 19327 May 25 17:24 ordner2
- Nun müssen wir die Besitzer in dem lokalen Ordner setzen
chown -R 33:0 /pfad/zum/ordner/oder/datei
- Das Volume-Mapping kann jetzt im Container-Start oder in der docker-compose.yml-Datei eintragen werden. Die Dateien werden nun unter /pfad/zum/ordner/oder/datei persistiert.
No Comments