Einführung
Docker-Volumes sind der bevorzugte Mechanismus zum Einrichten von dauerhaftem Speicher für Ihre Docker-Container. Volumes sind vorhandene Verzeichnisse auf dem Host-Dateisystem, die in einem Container gemountet sind. Auf sie kann sowohl vom Container als auch vom Hostsystem aus zugegriffen werden.
Docker ermöglicht es Benutzern auch, Verzeichnisse zu mounten, die über das NFS-Remote-Dateifreigabesystem freigegeben wurden. Die zu diesem Zweck erstellten Volumes verwenden den Docker-eigenen NFS-Treiber, sodass das NFS-Verzeichnis nicht mehr auf dem Hostsystem gemountet werden muss.
Dieses Tutorial zeigt Ihnen, wie Sie NFS-Docker-Volumes erstellen und verwenden.
Voraussetzungen
- NFS-Server auf dem Remote-Rechner installiert und konfiguriert.
- Docker auf dem lokalen Computer installiert.
- Ein Benutzerkonto mit Root-/Sudo-Berechtigungen.
NFS-Docker-Volume erstellen
Die einfachste Möglichkeit zum Erstellen und Verwalten von Docker-Volumes ist die Verwendung des docker volume
Befehl und seine Unterbefehle.
Die Syntax zum Erstellen eines NFS-Docker-Volumes umfasst zwei Optionen.
- Der
--driver
Option definiert denlocal
Volume-Treiber, der ähnliche Optionen wiemount
akzeptiert Befehl unter Linux. - Die
--opt
Die Option wird mehrmals aufgerufen, um weitere Details zum Volume bereitzustellen.
Die Details umfassen:
- Der Volume-Typ.
- Der Schreibmodus.
- Die IP- oder Webadresse des entfernten NFS-Servers.
- Der Pfad zum freigegebenen Verzeichnis auf dem Server.
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=[ip-address],rw \
--opt device=:[path-to-directory] \
[volume-name]
Das folgende Beispiel veranschaulicht das Erstellen eines NFS-Docker-Volumes mit dem Namen nfs-volume
. Das Volume enthält /mnt/nfsdir
Verzeichnis auf dem Server, mit dem rw
(Lesen/Schreiben)-Berechtigung. Die IP-Adresse des Servers ist 10.240.12.70
.
Der erfolgreich ausgeführte Befehl gibt den Namen des Volumes aus.
Listen Sie die verfügbaren Docker-Volumes auf.
docker volume ls
Die Ausgabe listet das von Ihnen erstellte Volume auf.
Untersuchen Sie das Volume mit inspect
Unterbefehl.
docker volume inspect [volume-name]
Die Ausgabe zeigt die Lautstärkekonfiguration.
NFS in einem Container bereitstellen
Um das NFS-Volume in einen Container einzubinden, installieren Sie nfs-common
Paket auf dem Hostsystem.
Beginnen Sie mit der Aktualisierung der Repositories.
sudo apt update
Verwenden Sie APT, um nfs-common
zu installieren Paket.
sudo apt install nfs-common
Bestätigen Sie, dass Sie das Paket installieren möchten, und warten Sie, bis die Installation abgeschlossen ist.
Verwenden Sie den docker run-Befehl, um den Container zu starten. Geben Sie das NFS-Volume und den Einhängepunkt in --mount
an Abschnitt.
docker run -d -it \
--name [container-name] \
--mount source=[volume-name],target=[mount-point]\
[image-name]
Das folgende Beispiel stellt das NFS-Volume mit dem Namen nfs-volume
bereit in /mnt
Verzeichnis im Container.
Bestätigen Sie, dass das Volume erfolgreich gemountet wurde, indem Sie docker inspect
verwenden Befehl.
docker inspect [container-name]
Die Mounts
Abschnitt der Ausgabe enthält die in den Container gemounteten Volumes.
Rufen Sie die Bash-Shell der Containerumgebung mit docker exec
auf :
docker exec -it [container-name] /bin/bash
Listen Sie den Inhalt von /mnt
auf Verzeichnis.
ls /mnt
Die Ausgabe zeigt die Dateien, die in /mnt/nfsdir
gehostet werden Verzeichnis auf dem Server.
Wenn Sie eine Datei im Docker-Container erstellen, ist sie auch im ursprünglichen Verzeichnis auf dem Server zugänglich. Verwenden Sie zum Testen den touch-Befehl, um eine leere Datei in /mnt
zu erstellen Verzeichnis.
touch /mnt/docker1.txt
Navigieren Sie auf dem Server zu dem von Ihnen freigegebenen Verzeichnis und listen Sie dessen Inhalt auf. Die im Docker-Container erstellte Datei wird angezeigt.
Einhängen von NFS-Volumes mit Docker Compose
Wenn Sie Docker Compose zum Verwalten Ihrer Container verwenden, hängen Sie das NFS-Volume ein, indem Sie es in der YML-Datei definieren.
Erstellen Sie die YML-Datei.
nano docker-compose.yml
Definieren Sie das NFS-Volume in volumes
Abschnitt.
version: "3.2"
services:
[service-name]:
image: [docker-image]
ports:
- "[port]:[port]"
volumes:
- type: volume
source: [volume-name]
target: /nfs
volume:
nocopy: true
volumes:
[volume-name]:
driver_opts:
type: "nfs"
o: "addr=[ip-address],nolock,soft,rw"
device: ":[path-to-directory]"
Erstellen und starten Sie den Container mit docker-compose up
Befehl.