Docker Daten speichern: Docker Volumes vs. Host-Ordner

This page is also available in English

Ich betreibe eine handvoll Docker Container auf einem einzelnen Linux-Host. Docker-Container werden bei einem erneuten erstellen oder beim Austausch auf eine neuere Imageversion bekanntlich ausgetauscht und verlieren dabei alle ge√§nderten Daten. Um bestimmte Ordner eines Containers permanent zu speichern, m√ľssen diese √ľber Volumes oder Bind-Mounts ausgelagert werden. Ich habe dazu meist bestimmte Pfade der Container in definierten Ordnern am Host verbunden (Bind-Mounts). Mit ein Grund f√ľr die Verwendung von Bind Mounts anstelle von Volumes ist, dass ich die Ordner √ľber den Host einfacher kopieren, sichern oder auf einen anderen Host √ľbertragen kann. Aber ist das √ľberhaupt der richtige Ansatz? Sollte ich besser Docker-Volumes einsetzen? Was ist der Vorteil von Docker Volumes?

Bind-Mounts

Wie bereits erw√§hnt sind Bind-Mounts definierte Ordner des Host-Rechners die in bestimmte Verzeichnisse des Docker-Containers verbunden werden. Der Host-Ordner f√ľgt sich im Dateisystem des Docker Containers nahtlos ein und¬†verh√§lt sich im Filesystem des Containers wie jeder andere Ordner. Am Host-Ordner k√∂nnen die Daten gelesen und ge√§ndert werden.¬†

Docker Volumes 

Volumes sind die empfohlene Variante um Daten von Docker-Containern zu speichern. Volumes sind Ordner die vollst√§ndig von Docker verwaltet werden, was den Speicher vom darunterliegenden Host unabh√§ngig und sicherer macht.¬†Die Verwaltung von Docker-Volumes kann √ľber Docker-CLI-Befehle oder der Docker-API erfolgen.¬†

Docker Volumes vs. Bind-Mounts

Vorteile von Volumes

  • Volumes werden von Docker verwaltet und sind damit, genau wie die Container: betriebssystemunabh√§ngig.
  • Volumes k√∂nnen mit Docker-CLI-Befehlen oder der Docker-API verwaltet werden.
  • Beim Einsatz von Docker Desktop auf Windows oder MAC liefern Volumes eine bessere Performance
  • Der m√∂gliche Einsatz von Volume-Treibern und die damit verbundenen Optionen Volumes auf entfernten Hosts oder Cloud-Anbietern zu speichern und den Inhalt zu verschl√ľsseln oder andere Funktionen hinzuzuf√ľgen.
  • Der Inhalt von Docker Volumes kann vorbef√ľllt werden
  • Laut der offiziellen Docker Dokumentation sind Volumes einfacher zu sichern oder zu migrieren als Bind-Mounts:¬†
    Volumes are easier to back up or migrate than bind mounts.
    Quelle: https://docs.docker.com/storage/volumes/ (Abrufdatum: 06.09.2022)
    Diese Aussage trifft meiner Meinung nach nicht auf jedes Setup zu. Beim Einsatz von Volumes sollte der Zugriff nicht mehr direkt √ľber den Host erfolgen, was den Einsatz von Host-Befehlen, wie rsync oder ein anderes am Host installiertes Backup erschwert.¬†

Nachteile

Docker Volumes verwenden

Beim Start eines Containers mit "docker run" können Volumes mit dem Parameter -v oder -mount angegeben werden:

docker run -v volumename:/app nginx:latest

Beim Einsatz von --mount als Parameter werden die Eigenschaften etwas ausf√ľhrlicher angegeben:

docker run --mount source=volumename,target=/app nginx:latest

Mit Docker Compose können Volumes im Bereich volumes definiert und in den Services wie folgt angegeben werden:

File: docker-compose.yml

version: '3.1'

services:
  service1:
    image: test
    ...
    volumes:
      - volumename4service1:/var/www/html

  service1:
    image: test2
    ...
    volumes:
      - volumename4service2:/var/www/html

volumes:
  volumename4service1:
  volumename4service2:
...

Volumes eines Containers anzeigen: docker inspect

Um herauszufinden, welche Volumes oder Mounts ein Container verwendet, kann der Befehl "docker inspect containername" verwendet werden:

docker inspect wordpress

FAQ

Wo befinden sich Docker-Volumes? 

Volumes werden in einem Ordner im Host-Dateisystem gespeichert und von Docker verwaltet (f√ľr Linux: /var/lib/docker/volumes/).

Was ist der Unterschied zwischen Docker Volumes und Bind-Mounts

Beide: Docker Volumes und Bind-Mounts verkn√ľpfen bestimmte Ordner eines Containers mit einem Ordner am Host-Betriebssystem. Bind-Mounts sind dabei definierte Ordner am Host-Betriebssystem, f√ľr Docker Volumes wird der Pfad hingegen von Docker verwaltet. Auch Docker-Volumes befinden sich in einem Ordner am Host-Betriebssystem, der Unterschied besteht aber darin, dass Docker den Ordner vorgibt und verwaltet und den Einsatz von Docker-CLI-Befehlen oder der Docker-API erm√∂glicht.

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE f√ľr deine Bewertung!

Ver√∂ffentlichung: 13.10.2022 von Bernhard ūüĒĒ


Top-Artikel in diesem Bereich


ioBroker installieren - Docker
Mit ioBroker können verschiedene Automatisierungslösungen oder Geräte in einem System zusammengefasst werden. Um bestimmte Gateways oder Geräte ansprechen zu können, werden in ioBroker verschiedene Adapter verwendet.

Home-Assistant Docker Conbee 2 und Zigbee2MQTT / deCONZ
Dank zahlreicher Integrationsm√∂glichkeiten ist Home-Assistant eine einfache Plattform f√ľr das Steuern verschiedenster Smart-Home Ger√§te. Im Vergleich zu ioBroker ist mir der Start mit Home Assistant wesentlich einfacher gefallen. W√§hrend ich f√ľr ioBroker noch am Suchen war, welches Frontend ich f√ľr meine Dashboards verwenden k√∂nnte, hatte ich mit Home-Assistant out of the box ein fertig eingerichtetes System. Die Lovelance Dashboards von Home Assistant k√∂nnen einfach in der GUI zusammengeklickt...

Conbee 2: Phoscon deCONZ - Docker Inbetriebnahme | Review
Mit dem kleinen USB-Stick Conbee2 habe ich meinen NAS um ein Zigbee-Gateway erweitert. Conbee2 kann auf Raspbian, Ubuntu, Docker oder Windows installiert werden.

Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details