Modius - Techblog

  • Ansible
  • Docker
  • DevOps
  • Gastautor werden
  • Newsletter abonnieren
  • Über Mich
  • Kontakt

Docker – Richtige Handhabung von bind mounts

Veröffentlicht am 3. August 2018 von Christian Piazzi Hinterlasse ein Kommentar , Aktualisiert am 3. August 2018
Geschätzte Lesezeit: 1 Minute

Docker bind mounts - Gestapelte ContainerDie guten alten bind mounts. Es gibt sie genau so lange wie es Docker selbst bereits gibt. Aus diesem Grund werden die meisten von euch, die sich schon etwas länger mit Docker beschäftigen auch bereits einiges über bind mounts wissen. Trotzdem möchte ich hier noch mal vorstellen was bind mounts genau sind und was man mit diesen machen kann.

Inhaltsverzeichnis

Was sind bind mounts

Mit den sogenannten bind mounts hat man die Möglichkeit, Dateien oder Verzeichnisse des Hosts direkt in einen Docker Container einzubinden. Dabei wird die Datei / das Verzeichnis durch den vollständigen oder relativen Pfad auf dem Host referenziert.

Diese Dateien oder Verzeichnisse können auch bei Laufzeit erst durch den Container erstellt werden. Generell sind bind mounts sehr performant, allerdings ist man auf das Dateisystem des Hosts angewiesen, welches eine spezielle Struktur haben muss. Aus diesem Grund sollte man zum Beispiel für die Entwicklung von Docker Anwendungen lieber Volumes anstelle von bind mounts verwenden.

Container mit einem bind mount starten

Um einen Container mit einem bind mount zu starten, verwendet man den Parameter –mount. diesem werden dann type, source und target mitgegeben. Das ganze sieht wie folgt aus.

1
2
docker run -d -it --name bind_test --mount type=bind,source=/tmp/data,target=/tmp redis:latest
60753ea3ee222be71c95b588d8a4eacd83b7c0b8412c64d4493b8a5dd5f0a116

Schauen wir uns mit docker inspect den Container an, dann finden wir im Abschnitt Mounts den übergebenen bind mount.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
"Mounts": [
            {
                "Type": "bind",
                "Source": "/tmp/data",
                "Destination": "/tmp",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "volume",
                "Name": "1199fb55a6e4a69f7a58fd295012afe3aa366e1f27987705c7f7eb76aa89c9c1",
                "Source": "/var/lib/docker/volumes/1199fb55a6e4a69f7a58fd295012afe3aa366e1f27987705c7f7eb76aa89c9c1/_data",
                "Destination": "/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],

Readonly mit bind mounts

Einen bind mount nur mit Leseberechtigung zu übergeben ist nicht weiter schwer und unterscheidet sich kaum von unserem vorherigen Aufruf. Dem Parameter –mount muss nur das Signalwort readonly mitgegeben werden. Das ganze sieht dann so aus:

1
2
docker run -d -it --name bind_test --mount type=bind,source=/tmp/data,target=/tmp,readonly redis:latest
beb8a1de2d118f95fb15715906051ebc95f84f51892678185cf1114369a6b4e2

Schauen wir uns nun den Container mit docker inspect an sehen wir im Mounts Bereich bei dem Eintrag für unseren bind, dass bei RW (Read&Write) nun false hinterlegt ist.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   "Mounts": [
            {
                "Type": "volume",
                "Name": "64ce094593bb4c35e8d4f17fedf3ce751ca4642870443751091a8f8956f70ebf",
                "Source": "/var/lib/docker/volumes/64ce094593bb4c35e8d4f17fedf3ce751ca4642870443751091a8f8956f70ebf/_data",
                "Destination": "/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "bind",
                "Source": "/tmp/data",
                "Destination": "/tmp",
                "Mode": "",
                "RW": false,
                "Propagation": "rprivate"
            }
        ],

Kategorie: DevOps, Docker Tags: bind, Mounts, readonly, Volume

Über Christian Piazzi

Ich blogge hier über alles, was mir so in meinem ITler Altag über den Weg läuft =)
Man findet mich privat bei Google+ und Twitter

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

  • Linux
  • Internet, Bloggen & Co
  • Programmierung
  • Sicherheit
  • Netzwerk & Co
  • Mikrokontroller
  • Windows

Neueste Kommentare

  • Prometheus Installation unter Ubuntu - Modius - Techblog bei Prometheus Installation unter CentOS
  • Rainer bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen
  • Rainer Wohlfarth bei Docker Container – anzeigen, starten, stoppen und löschen

Werbung

Archive

Kontakt, Datenschutz und Impressum

  • Kontakt
  • Datenschutz
  • Impressum

Schlagwörter

Anleitung Ansible Apache Apple App Store Automatisierung Blogparade C++ Centos centos 7 CentOS7 Container Datenbank DevOps Docker Dr. Racket Dr. Scheme funktional Gastartikel Google HowTo httpd Icinga2 Icinga 2 Installation itsm Linux Minecraft Monitoring mooc MySQL owncloud PHP Plugin Programmierung python Raspberry Pi Schritt für Schritt Server Sicherheit Tutorial Ubuntu Update Windows Wordpress

Copyright © 2025 · Outreach Pro on Genesis Framework · WordPress · Anmelden