5.1 Idee von gebundenen Verzeichnissen (bind mounts)
Das Mounten von Host-Verzeichnissen in Container mittels gebundener Verzeichnisse (bind mounts) ist eine leistungsstarke Funktion von Docker, die es Containern ermöglicht, direkt auf Dateien und Verzeichnisse zuzugreifen, die sich auf dem Host-System befinden. Das ist besonders praktisch für Entwicklung, Tests und Konfiguration, wenn lokale Dateien genutzt werden müssen, ohne sie in den Container zu kopieren. In dieser Vorlesung schauen wir uns an, wie man gebundene Verzeichnisse verwendet, bringen Beispiele und Best Practices.
Gebundene Verzeichnisse erlauben es, spezifische Verzeichnisse oder Dateien vom Host-System in Container zu mounten. Das unterscheidet sich von Volumes, die von Docker verwaltet werden und in einem speziellen Verzeichnis gespeichert sind.
Vorteile der Verwendung von gebundenen Verzeichnissen
- Direkter Zugriff auf Host-Dateien: Container können Dateien auf dem Host direkt nutzen und ändern.
- Bequeme Entwicklung: Entwickler können Dateien auf dem Host ändern und diese Änderungen in den Containern in Echtzeit sehen.
- Flexibilität: Jedes beliebige Verzeichnis auf dem Host kann in einen Container gemountet werden.
Befehl für das Mounten von gebundenen Verzeichnissen
Gebundene Verzeichnisse werden mit den Parametern -v
oder --mount
beim Starten eines Containers gemountet.
5.2 Beispiele für die Verwendung von Parameter -v
1. Mounten eines Host-Verzeichnisses in einen Container
Ein einfaches Beispiel für das Mounten eines Host-Verzeichnisses in einen Container:
docker run -d --name my_container -v /path/on/host:/path/in/container nginx
In diesem Beispiel wird das Verzeichnis /path/on/host
auf dem Host in das Verzeichnis /path/in/container
innerhalb des Nginx-Containers gemountet.
2. Mounten einer Host-Datei in einen Container
Du kannst auch einzelne Dateien mounten:
docker run -d --name my_container -v /path/on/host/config.conf:/etc/nginx/nginx.conf nginx
In diesem Beispiel wird die Konfigurationsdatei config.conf
auf dem Host als Konfigurationsdatei nginx.conf
innerhalb des Containers gemountet.
5.3 Beispiele für die Verwendung des Parameters --mount
Der Parameter --mount
bietet eine detailliertere Methode zum Mounten von gebundenen Verzeichnissen mit der Möglichkeit, verschiedene Parameter anzugeben.
1. Mounten eines Verzeichnisses mit --mount
docker run -d --name my_container --mount type=bind,source=/path/on/host,target=/path/in/container nginx
Dieses Beispiel ist identisch mit dem vorherigen Beispiel mit -v
, verwendet jedoch eine detailliertere Syntax.
2. Mounten im Read-Only-Modus
docker run -d --name my_container --mount
type=bind,source=/path/on/host,target=/path/in/container,readonly nginx
In diesem Beispiel wird das Verzeichnis im Nur-Lese-Modus gemountet, was das Ändern von Dateien im Container verhindert.
5.4 Praktische Beispiele
Um eine Webanwendung zu entwickeln, kannst du ein Verzeichnis mit dem Quellcode vom Host in den Container mounten.
Erstellen eines Verzeichnisses mit dem Quellcode auf dem Host:
mkdir -p ~/my_web_app
echo "Hallo, Welt!" > ~/my_web_app/index.html
Container mit Mounting eines Verzeichnisses starten:
docker run -d --name web_dev -v ~/my_web_app:/usr/share/nginx/html nginx
Nun werden alle Änderungen im Verzeichnis ~/my_web_app auf dem Host sofort im Container sichtbar sein.
Beispiel 2: Verwendung von Konfigurationsdateien
Du kannst Konfigurationsdateien aus einem Host-Verzeichnis in den Container mounten.
Erstellen einer Konfigurationsdatei auf dem Host:
echo "user www-data;" > ~/nginx.conf
echo "worker_processes auto;" >> ~/nginx.conf
Container mit Mounting der Konfigurationsdatei starten:
docker run -d --name nginx_custom -v ~/nginx.conf:/etc/nginx/nginx.conf nginx
In diesem Beispiel wird die Nginx-Konfigurationsdatei vom Host innerhalb des Containers verwendet.
5.5 Prüfung von gemounteten Verzeichnissen und Dateien
Du kannst den Inhalt von gemounteten Verzeichnissen und Dateien überprüfen, indem du den Befehl docker exec verwendest, um Befehle innerhalb des Containers auszuführen.
Beispiel
Überprüfung des Verzeichnisinhalts:
docker exec -it my_container ls /path/in/container
Überprüfung des Datei-Inhalts:
docker exec -it my_container cat /path/in/container/config.conf
Entfernen von gebundenen Verzeichnissen
Gebundene Verzeichnisse werden nicht direkt von Docker verwaltet, daher erfolgt deren Entfernung auf der Ebene des Host-Dateisystems.
Beispiel
Entfernung eines gebundenen Verzeichnisses auf dem Host:
rm -r /path/on/host
GO TO FULL VERSION