Linux docker-Verzeichnis auf smb-Share verschieben

Don_2020

Lt. Commander
Registriert
Aug. 2019
Beiträge
1.755
Habe docker auf einer VM installiert. Docker liegt auf /var/lib/docker. Das Programmverzeichnis möchte ich auf das smb Share /mnt/docker verschiebn. /mn7docker liegt auf dem Server und wird über mount -t cifs //server-IP/sharesname /mnt/docker eingebunden.
Das Verschieben habe ich nach der Anleitung von Thomas Krenn Wiki "Root Data Directory in Docker dauerhaft ändern" vorgenommen. NAch dem Ausführen von

rsync -aP /var/lib/docker/ "/root/docker/root"

als root kommt immer die Fehlermeldung:

rsync: [generator] symlink "/mnt/docker/overlay2/l/RVNMESR77752HTORHWKS74P6MH" -> "../775684e368666d504735ded4ff99b4d3a1af864924bc55813b57f38ad40498df-init/diff" failed: Operation not supported (95)

Ab hier weiss ich nicht mehr weiter. Kann das sein, das die docker-Dateien nur lokal installiert werden können?
 
Nimm ein Filesystem was alle posix Features unterstützt.
 
Debian 12 mit Desktop Gnome. Sollte die Anforderungen erfüllen.

mount gibt folgendes aus:

//Server-IP/Sharename on /mnt/docker type cifs (rw,nosuid,nodev,noexec,relatime,vers=3.1.1,cache=strict,username=meinname,domain=workgroup,uid=0,noforceuid,gid=0,noforcegid,addr=Server-IP,file_mode=0777,dir_mode=0777,soft,nounix,serverino,mapposix,rsize=4194304,wsize=4194304,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
 
Die Fehlermeldung sagt dir das ein Symlink nicht erstellt werden konnte weil das Dateisystem das nicht unterstützt. Docker auf einer Windows Dateifreigabe wird da einfach nicht funktionieren.

Generell ist die Idee Docker auf einem Netzlaufwerk zu benutzen problematisch, wenn du nicht wirklich Experte da bist würde ich das gar nicht erst versuchen. Das wird alle möglichen Probleme machen insbesondere in der Performance.
 
  • Gefällt mir
Reaktionen: madmax2010 und Tornhoof
Danke für die Info. Das habe ich mir fast gedacht.

Eigentlich ist mir egal wo docker installiert wird. Ich möchte nur ein lauffähiges Backup für meine paperless installation haben. Bisher sind alle meine Versuche (Restore) gescheitert Paperless auf einer anderen VM zum laufen zubringen. Problem macht offensichtlich das Verzeichnis /var/lib/docker.
 
Manche Container laufen problemlos von einem SMB Share, andere nicht. Das hat mich auch schon zur Verzweiflung getrieben.

Ich habe mir inzwischen so beholfen, dass ich das Verzeichnis mit den Docker Volumes direkt auf dem Linux Server als SMB Share freigegeben habe (statt wie vorher alles auf das NAS auszulagern).

Somit kann ich auch vom Windows-Rechner aus die Configs editieren.
 
Die Verzeichnisse von paperless-ngx kann ich problemlos auf einen Share auslagern. Das klappt ganz gut.
Jedoch wenn ich diese Daten in einer anderen VM nutzen möchte (worst-case-senario), dann komme ich nicht mehr an meine Daten ran. Es fehlen die Dateien aus /var/lib/docker.
Meine Idee was diese ebenfalls auf dem Share zu speichern.
 
Wenn es dir nur darum geht ein Volume für deinen Container woanders hin zu legen als unter /var/lib/docker/volumes kannst du doch bei docker Run oder im Compose File einfach einen absoluten Pfad angeben?

Ansonsten würde ich die aber eher lokal liegen lassen und regelmäßig ein Backup aufs Nas machen.

Hab noch nicht ganz verstanden warum die Dateien auf das Nas sollen.
 
Lass den Quatsch, früher oder später rennst du in Probleme. Wenn du keine Volumes nutzen willst, mounte das Verzeichnis einfach lokal. So mach ich das mit jedem Deployment, sodass Compose + Daten im selben Verzeichnis liegen. Für Backups setzt du dann auf restic o.ä.

Wenn du alles auf einen SMB Share legst/kopierst, gehen alle Permissions flöten, die ggf. zur Runtime relevant sind. Und wiederherstellen wird dann schwer bis unmöglich.

Einzig relevant sind auch nur die Volumes. Der Rest ist vollkommen egal.

Btw: Die Volumes woanders hin verschieben/kopieren ist kein Backup.
 
  • Gefällt mir
Reaktionen: jokakilla
Wenn ich das ganze richtig verstanden habe, reicht es aus die Volumes /mnt/paperless/* (hier sind meine Paperless-Dateien abgelegt) und das Verzeichnis /var/lib/docker zu sichern. In irgendeinem Ordner (die Namen werden von Docker selbst vergeben) steckt die paperless-configuration.

Neue VM mit neuer docker installation. Share wird unter /mnt/paperless eingebunden und alle Backup-Daten aus der alten VM (/var/lib/docker) in den Ordner der neuen VM /var/lib/docker/ kopiert. Dann müßte Paperless auf den neuen Maschine laufen.
 
Nur um noch eine Möglichkeit aufzuzeigen, auch wenn diese vermutlich mehr Aufwand bedeutet:
Ich nutze als Backup und Restore die Paperless-Funktion des Dokument-Exports + Import.
Der Export scheint auch das ganze System zu sichern, nicht nur die Dokumente, denn Tags, Korrespondenten, und sogar mein Account-Passwort war dann auf meiner VM wo ich den Restore-Test durchgeführt habe zu meinem echten System identisch.
 
Don_2020 schrieb:
Habe docker auf einer VM installiert. Docker liegt auf /var/lib/docker. Das Programmverzeichnis möchte ich auf das smb Share /mnt/docker verschiebn. /mn7docker liegt auf dem Server und wird über mount -t cifs //server-IP/sharesname /mnt/docker eingebunden.
Keine gute Idee.

Ich nutze bei mir selten die Docker Volumes und habe das eine oder andere Docker "Volume" auf den NAS verschoben. Alls, was viel I/O braucht (z.B. Datenbank) läuft aber auf dem Mini-Server. Ansonsten kann man sich alles zerschießen, wenn was nicht sauber geschrieben werden kann. Oder es zu langsam ist.

Wenn man hier was verschiebt, sollte dann auch klar sein, welche Konsequenzen es haben kann.
 
Don_2020 schrieb:
Wenn ich das ganze richtig verstanden habe, reicht es aus die Volumes /mnt/paperless/* (hier sind meine Paperless-Dateien abgelegt) und das Verzeichnis /var/lib/docker zu sichern. In irgendeinem Ordner (die Namen werden von Docker selbst vergeben) steckt die paperless-configuration.

Neue VM mit neuer docker installation. Share wird unter /mnt/paperless eingebunden und alle Backup-Daten aus der alten VM (/var/lib/docker) in den Ordner der neuen VM /var/lib/docker/ kopiert. Dann müßte Paperless auf den neuen Maschine laufen.
Warum genau brauchst du das /var/lib/docker Verzeichnis fürs Backup? Kenne das Image nicht aber kann man nicht ein Volume für das Datenverzeichnis nutzen und sichert einfach regelmäßig nur dieses Volume weg?

Edit: wenn Daten und Konfiguration in unterschiedlichen Verzeichnissen liegen brauchst du dann halt zwei volumes die du sicherst.

Vielleicht kannst du dich auch an den offiziellen Compose Files orientieren. Z.b. hier https://github.com/paperless-ngx/paperless-ngx/blob/main/docker/compose/docker-compose.sqlite.yml

Da gibt es auch mehrere volumes und die mit Punkt am Anfang sollten nicht im /var/lib/docker liegen.
 
Zuletzt bearbeitet:
Zurück
Oben