Docker Bind Mounts oder Volumes?

Für meine Docker Container verwende ich

  • Ausschließlich Bind Mounts

    Stimmen: 6 60,0%
  • Ausschließlich Volumes

    Stimmen: 1 10,0%
  • Je nach Bedarf mal Bind Mounts mal Volumes

    Stimmen: 3 30,0%

  • Umfrageteilnehmer
    10

Don-DCH

Captain
Registriert
Aug. 2009
Beiträge
3.428
Guten Mittag zusammen,

ich beschäftige mich seit einiger Zeit mit Docker unter Debian. (kommend von einem Synology NAS) Nun habe ich ein paar wneige Container angelegt mit Docker Volumes, da, so wie ich gelesen habe viele Vorteile greifen wie eine automatische Rechtevergabe um die sich Docker kümmert. Mehr Isolation vom Host System etc.

Generell finde ich es verwirrend wenn man recherschiert steht manchmal dabei das eine UID berechtigt werden soll manchmal aber auch nicht. Daher schrecke ich etwas vor Bind Mounts zurück.

Bezüglich eines Backups scheinen mir Bind Mounts jedoch angenehmer da ich nicht einen Container brauche wo ich alle Volumes reinmappe sondern einfach die Container stoppe und dann alle Daten unter dem Bind Mount sichere und so ein konstentes Backup haben sollte auch bei Datenbanken, da die Container ja gestoppt sind oder liege ich da falsch? Oft wird ja bei Datenbanken empfohlen ein Dump zu machen.

Doch wie kann ich prüfen welche Rechte man braucht, ich möchte nicht das der Container angelegt wird und ich später merke irgendwas stimmt nicht oder würde man das direkt sehen/bemerken?

Ich verwende Portainer und Stacks also Docker Compose.
Generell hatte ich überlegt ein Verzeichnis wie /opt/docker/Containername zu nutzen ist das sinnvoll?

Anbei ein paar Container welche ich gerne betreiben möchte, vielleicht kann jemand was dazu sagen bezüglich der Rechten/Berechtigungen, welche gesetzt werden müssen und wie sich diese mit Bind Mounts verhalten?
-ngnix proxy manager
-sftpgo (hier habe ich explizit gelesen das man uid 1000 berechtigen muss bei bind mounts)
-linkwarden
-paperlessngnx
-audiobookshelf
-jellyfin
-portainer

Freue mich über jede Meinung/Erfahrung/Hilfe

Ich wünsche euch einen schönen Sonntag :)
 
Don-DCH schrieb:
Bezüglich eines Backups scheinen mir Bind Mounts jedoch angenehmer da ich nicht einen Container brauche wo ich alle Volumes reinmappe sondern einfach die Container stoppe und dann alle Daten unter dem Bind Mount sichere und so ein konstentes Backup haben sollte auch bei Datenbanken, da die Container ja gestoppt sind oder liege ich da falsch? Oft wird ja bei Datenbanken empfohlen ein Dump zu machen.
Nein, du stoppst einfach die Container und kannst ein dateibasiertes Backup der Mount Verzeichnisse machen, danach kannst du die Container neu starten oder aktualisieren.
 
  • Gefällt mir
Reaktionen: Don-DCH
Don-DCH schrieb:
Doch wie kann ich prüfen welche Rechte man braucht, ich möchte nicht das der Container angelegt wird und ich später merke irgendwas stimmt nicht oder würde man das direkt sehen/bemerken?
Der Container würde nicht starten oder es gebe einen Fehler in den Logs bezüglich der Berechtigungen.

Statt Portainer bietet sich auch an Oxker für den Heimbedarf zu verwenden. Das ist eine kleine Containerübersicht im Terminal.

docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=always ghcr.io/mrjackwills/oxker
 
  • Gefällt mir
Reaktionen: Don-DCH und KarlGa
Ja, dadurch wird immer die neueste Version verwendet (eine kurze Beschreibung hätte genügt). Für oxer habe ich mir mal ein alias in .bashrc angelegt jetzt. :)
 
Helpmaster5000 schrieb:
Statt Portainer bietet sich auch an Oxker für den Heimbedarf zu verwenden. Das ist eine kleine Containerübersicht im Terminal.
Ich nutze für den Heimgebrauch Lazydocker, was einfach ne Terminalanwendung ohne eigenen Container ist.

Also Bonus kommt nach hinzu, wenn man das Tool in einem Ordner mit einer compose.yml aufruft, bekommt man darin sogar zusätzlich die in dieser Datei definierten Services/Container aufgelistet.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: KarlGa
KarlGa schrieb:
Nein, du stoppst einfach die Container und kannst ein dateibasiertes Backup der Mount Verzeichnisse machen, danach kannst du die Container neu starten oder aktualisieren.
Das klingt gut, danke!

Helpmaster5000 schrieb:
Der Container würde nicht starten oder es gebe einen Fehler in den Logs bezüglich der Berechtigungen.
Ok gut, wenn man gleich fehlende Berehctigungen merkt klingt gut.

Helpmaster5000 schrieb:
Statt Portainer bietet sich auch an Oxker für den Heimbedarf zu verwenden. Das ist eine kleine Containerübersicht im Terminal.
Danke dir für die empfehlung, ich finde Portainer tatsächlich sehr angenehm :)
 
KarlGa schrieb:
Würde ich nicht empfehlen. Da es schon vorkommt, dass es mit der aktuellen Version des Containers ein Problem gibt. Hatte ich schon paar Mal bei 2-3 Projekten in den letzten 12 Monaten gehabt.

Muss man halt wissen, worauf man sich hier einlässt.
 
oicfar schrieb:
Würde ich nicht empfehlen. Da es schon vorkommt, dass es mit der aktuellen Version des Containers ein Problem gibt. Hatte ich schon paar Mal bei 2-3 Projekten in den letzten 12 Monaten gehabt.
Ich hatte in der .bashrc einfach mal

alias oxker='docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=always mrjackwills/oxker'

eingetragen, also die (etwas ältere) Version vom Docker-Hub.

Anyway, eigentlich verwende ich dozzle mit webui, um die Stats zu sehen...

1756730636495.jpeg


Problem ist leider nur, dass man damit die Container nicht neu starten kann, falls mal etwas hakt, dann brauche ich doch eine Shell.
 
@KarlGa mit Problemen meinte ich eher, dass die Anwendung, die da lief ein Problem hatte. Deswegen bin ich persönlich kein Fan von automatischen Updates. Ich stoße Docker-Image Updates manuell an, da ich erst abwarte, ob für die neue Version irgendwas gemeldet wird.

Und Dozzle ist auch für mich ein sehr nützliches Tool.
 
  • Gefällt mir
Reaktionen: KarlGa
mibbio schrieb:
Ich nutze für den Heimgebrauch Lazydocker, was einfach ne Terminalanwendung ohne eigenen Container ist.
Gibt da so einige Tools für. Lazydocker hatte ich auch mal, aber ich bevorzuge gerade die Containerversion von Oxker, auch wenn es Lazydocker auch im Container ist. Desweiteren ist Oxker in Rust geschrieben, somit ist memory safety gegeben.
 
Helpmaster5000 schrieb:
Desweiteren ist Oxker in Rust geschrieben, somit ist memory safety gegeben.
Wobei Lazydocker halt in Go geschrieben ist, welches halt eine integierte Garbage Collection. Da kann also auch kein großer Unsinn mit Zeigern und der Speicherverwaltung passieren.
 
Bind mounts eigentlich nur bei Zugriff auf Bestandsdaten. Sonst immer volumes.

Ich sichere sowieso die ganze Docker VM per Proxmox Backup weg, da ist es egal.

Latest Tag verwende ich nur bei den Anwendungen, die nur ich verwende. Sobald ich für andere hoste, pulle ich gezielt die gewünschte Version.
 
  • Gefällt mir
Reaktionen: Don-DCH
@h00bi
Danke dir, das hat mir geholfen, leider ist es tehamtisch ja ein bisschen abgedriftet.

h00bi schrieb:
Ich sichere sowieso die ganze Docker VM per Proxmox Backup weg, da ist es egal.
Daran hatte ich auch gedacht, fährst du die VM dann herunter wegen Datenbanken und einem konsitenten Backup?

Ich plane jellyfin und audiobookshelf extra, da es schon große Daten sind mit Musik in Jellyfin und Hörbücher in Audiobookshelf, da würde ich eher einen extra PC für hernehmen mit HDDS.
Selbst als 320 kbit/s MP3 frisst das schon gut speicher.

Daher die Idee mit Bind Mounts das dann eifnach zu sichern.

h00bi schrieb:
Latest Tag verwende ich nur bei den Anwendungen, die nur ich verwende. Sobald ich für andere hoste, pulle ich gezielt die gewünschte Version.
Ok, verstehe aber insgesamt ist latest sinnvoll wegen Updates etc. wobei man natürlich schauen muss das gerade bei Abhängigkeiten der Datenbank COntainer auch kompatibel bleibt :)

Ich hatte auch überlegt wenn man die COntainer herutnerfährt und dann einfach per Rsync /var/lib/docker/volumes einfach alles zu sichern, das sollte auch konsitent sein oder?

Volumes sind schon schön weil man sich garnicht um irgendwelche rechte kümmern brauch.

Am entspanntesten ist natürlich eine VM mit backup über proxmox :)
 
Don-DCH schrieb:
Daran hatte ich auch gedacht, fährst du die VM dann herunter wegen Datenbanken und einem konsitenten Backup?
Nein, mache ich nicht.
Generell ist da bei mir erstmal nicht viel Last drauf. Zu der Zeit, zu der das Backup läuft, macht da niemand was. Zudem nutze ich überall sqlite als Datenbank.
Finde das viel bequemer wenn jeder Container seine eigene Datenbank Datei hat statt einen Datenbank-Container für mehrere Dienste.
Führt die Unabhängigkeit der Container irgendwie ad absurdum.
 
Zuletzt bearbeitet:
Don-DCH schrieb:
Daran hatte ich auch gedacht, fährst du die VM dann herunter wegen Datenbanken und einem konsitenten Backup?
Ich führe das DB Backup innerhalb des jeweiligen Containers aus und lasse das gezogene Backup dann in ein Volume schreiben.
 
Zurück
Oben