GNU/Linux >> LINUX-Kenntnisse >  >> Linux

20 nützliche Beispiele für Docker-Volume-Befehle für moderne Entwickler

Docker hat die Art und Weise, wie wir unsere Programme verpacken, seit seiner Einführung im Jahr 2013 verändert. Es ermöglicht Entwicklern, innovative Software mit minimalen Abhängigkeiten zu erstellen, und macht die Bereitstellung einfacher als je zuvor. Wenn Sie ein aufstrebender Softwareentwickler sind, der die Docker-Plattform beherrschen möchte, müssen Sie die verschiedenen Docker-Lautstärkebefehle gut verstehen. Volumes sind ein Mechanismus, der von Docker verwendet wird, um persistente Datenspeicherung bereitzustellen. Sie bieten erhebliche Vorteile in Bezug auf die Softwareentwicklung und -bereitstellung. Wir haben uns heute die Zeit genommen, Ihnen die Grundbausteine ​​von Datenvolumen in Docker beizubringen.

Wichtige Beispiele für Docker-Volume-Befehle

Dieser Leitfaden vermittelt Ihnen die aktuellen Methoden, die von Entwicklern verwendet werden, um persistente Datenspeicherung in kommerziellen und Open-Source-Projekten zu implementieren. Nach Abschluss dieses Leitfadens können Sie Ihre eigenen Datenvolumen erstellen und mühelos von Ihren Docker-Containern aus darauf zugreifen. Wenn Sie ein absoluter Anfänger sind, empfehlen wir Ihnen, unseren Leitfaden zu den wichtigsten Docker-Befehlen zu lesen, bevor Sie mit Volumes arbeiten.

1. Docker-Volumes erstellen

Es ist sehr einfach, Datenvolumes in Docker zu erstellen. Dazu müssen Sie den volume create-Befehl des Docker-Daemons verwenden. Werfen Sie einen kurzen Blick auf das folgende Beispiel, um zu sehen, wie das funktioniert.

$ docker volume create testVolume

Dieser Befehl erstellt einen Daten-Volume-Namen testVolume die von einem bestimmten Container verwendet oder von einem Cluster von Containern gemeinsam genutzt werden können. Sie können dieses Volume jetzt an einem Ort innerhalb des Containers bereitstellen. Sobald dies erledigt ist, ist es sehr einfach, Containerdaten vom Hostcomputer aus zu speichern oder darauf zuzugreifen.

2. Verfügbare Volumina anzeigen

Es ist üblich, dass Entwicklungsumgebungen eine große Anzahl von Datenmengen haben. Daher ist es wichtig, die spezifischen Volumes zu identifizieren, mit denen Sie arbeiten. Glücklicherweise ist es sehr einfach, alle derzeit deklarierten Datenvolumes mit dem Unterbefehl volume ls des Docker-Daemons aufzulisten.

$ docker volume ls
- -

Sie erhalten eine Liste aller auf Ihrem Host vorhandenen Docker-Volumes, indem Sie den obigen Befehl ausführen. Es druckt die Namen der Datenträger sowie die jeweiligen Datenträgertreiber aus. Die Datenvolumes werden in einem bestimmten Teil des Host-Dateisystems gespeichert, nämlich /var/lib/docker/volumes/ unter Linux.

3. Überprüfen von Docker-Volumes

Der Befehl „volume inspects“ des Docker-Daemons liefert uns wichtige Informationen über ein bestimmtes Volume. Es zeigt Informationen wie Volume-Treiber, Einhängepunkt, Bereich und Bezeichnungen an. Der folgende Befehl demonstriert dies anhand eines praktischen Beispiels.

$ docker volume inspect testVolume

Die resultierenden Daten zeigen, dass unser testVolume wird am Speicherort /var/lib/docker/volumes/testVolume/_data gemountet unserer Hostmaschine. Es zeigt auch das Erstellungsdatum für diese Informationen sowie alle angegebenen Optionen an. Es erleichtert Entwicklern die Fehlersuche bei Datenmengen erheblich.

4. Löschen bestimmter Volumes

Wenn Sie ungenutzte Datenmengen angesammelt haben, ist es eine gute Idee, diese zu entfernen. Auf diese Weise können Sie Speicherplatz in der Hostumgebung freigeben. Das folgende Beispiel zeigt, wie Sie ein einzelnes Volume mit seinem Namensattribut löschen können.

$ docker volume rm testVolume

Sie können also ein bestimmtes Datenvolume löschen, indem Sie den Unterbefehl volume rm gefolgt vom Volume-Namen verwenden. Als Bestätigung wird der Name des gelöschten Volumes in Ihrem Linux-Terminalemulator zurückgegeben.

5. Mehrere Volumes löschen

Auch das Löschen mehrerer Datenvolumes ist recht einfach. Übergeben Sie einfach nacheinander die Namen der Volumes, die Sie löschen möchten. Der folgende Befehl zeigt dies in Aktion.

$ docker volume rm testVolume newVolume otherVolume

Dieser Befehl entfernt die drei angegebenen Datenvolumes. Beachten Sie, dass wir newVolume nicht erstellt haben und otherVolume . Sie wurden hier nur zu Demonstrationszwecken verwendet. Stellen Sie daher sicher, dass Ihre Datenmengen überhaupt vorhanden sind, bevor Sie sie löschen.

6. Alle Volumes löschen

Es ist immer eine gute Idee, Ihre Datenmengen loszuwerden, sobald Ihre Container von Ihrem Entwicklungscomputer in die Produktionsumgebung verschoben wurden. Glücklicherweise ermöglicht der Docker-Daemon Entwicklern, alle verfügbaren Docker-Volumes mit einem einzigen Befehl zu entfernen, wie unten dargestellt.

$ docker volume prune

Darüber hinaus ist dieser Docker-Volume-Befehl elegant, was bedeutet, dass er keine Volumes entfernt, die von einem vorhandenen Container verwendet werden. Daher ist es sehr sicher zu verwenden und hilft, dringend benötigten Speicherplatz in Entwicklungsumgebungen freizugeben.

7. Container mit Datenvolumen erstellen

Wir haben bisher nur einige grundlegende Lautstärkeoperationen gezeigt. In den meisten realen Szenarien müssen Sie Ihre Datenvolumes jedoch in einem Docker-Container bereitstellen. Der folgende Docker-Befehl zeigt Ihnen, wie Sie einen Docker-Container erstellen und ein Datenvolume in diesen Container mounten.

$ docker run -d -it --name test-container -v "testVolume":/tmp ubuntu:xenial
$ docker run -d -it --name test-container --volume "testVolume":/tmp ubuntu:xenial

Dieser Befehl erstellt einen Container namens test-container unter Verwendung des ubuntu:xenial-Images und stellt unser Datenvolume in /tmp bereit Standort dieses Containers. Weitere Informationen finden Sie, indem Sie den folgenden Befehl ausführen und den Abschnitt „Mount“ der Ausgabe überprüfen.

$ docker inspect test-container

8. Mounten von Datenvolumes in Container

Das -Mount Option in Docker kann verwendet werden, um ein vorhandenes Datenvolumen an einen bestimmten Teil des Container-Dateisystems zu adressieren. Obwohl das Ergebnis dem obigen Befehl völlig ähnlich sein wird, ist es für viele Linux-Entwickler intuitiver.

$ docker run -d -it --name test-container --mount source=testVolume,target=/tmp ubuntu:xenial

Das –Mount Option eine Reihe von durch Kommas getrennten Tupeln. Diese sind = Paare, die die Attribute des Datenvolumens bezeichnen.

9. Bind Mounts in Docker erstellen

Bind-Mounts sind ein Persistenzmechanismus, der seit den Anfängen von Docker verfügbar ist. Sie bieten im Vergleich zu Docker-Volumes eine etwas eingeschränkte Funktionalität, sind aber in bestimmten Fällen besser geeignet. Im Gegensatz zu Volumes hängen Bind-Mounts vom zugrunde liegenden Host-Dateisystem ab.

$ docker run -d -it --name test-container --mount type=bind,source=$(pwd),target=/tmp ubuntu:xenial

Der obige Befehl erstellt einen Bind-Mount, der das aktuelle Arbeitsverzeichnis Ihres Linux-Dateisystems auf /tmp abbildet Standort des Containers. Die type=bind tuple gibt an, dass dies eher ein Bind-Mount als ein Volume ist.

10. Datenvolumes vorbelegen

Manchmal müssen Entwickler ihre Datenvolumen beim Erstellen von Docker-Containern vorab auffüllen. Diese Technik gilt jedoch nur, wenn das Ziel des Containers Daten vor der Volume-Erstellung enthält.

$ docker run -d --name=nginxContainer -v nginxVol:/usr/share/nginx/html nginx:latest

Dieser Befehl erstellt zuerst das Volume nginxVol und füllt es mit dem Inhalt von /usr/share/nginx/html Speicherort des Dateisystems des Containers. Jetzt sind diese Daten für alle anderen Container zugänglich, die sich das nginxVol-Volume teilen. Sie können alternativ die Mount-Syntax verwenden, wie unten gezeigt.

$ docker run -d --name=nginxContainer --mount source=nginxVol,destination=/usr/share/nginx/html nginx:latest

11. Nur-Lese-Volumes verwenden

Standardmäßig haben alle Container sowohl Lese- als auch Schreibzugriff auf ihre jeweiligen Datenvolumes. Allerdings müssen nicht alle Container Daten auf ein Volume schreiben. Oft reicht es schon aus, Daten auszulesen. In solchen Fällen können Sie Ihrem Container schreibgeschützten Zugriff zuweisen. Überprüfen Sie die Docker-Lautstärkebefehle, um zu sehen, wie dies funktioniert.

$ docker run -d --name=nginxContainer -v nginxVol:/usr/share/nginx/html:ro nginx:latest

Durch einfaches Hinzufügen des „:ro ‘ Feld nach dem Ziel verbietet dem nginxContainer das Schreiben von Daten in die nginxVol. Sie müssen die Datei „readonly“ verwenden ‘ Option, wenn Sie Volumes mit der Option –mount erstellen. Beachten Sie den Unterschied in der Syntax sorgfältig.

$ docker run -d --name=nginxContainer --mount source=nginxVol,destination=/usr/share/nginx/html,readonly nginx:latest

12. Volumes mit Treibern erstellen

Volume-Treiber sind ein flexibler Mechanismus, der von Docker verwendet wird, um Zugriff auf Remote-Mounts, Datenverschlüsselung und andere Funktionen bereitzustellen. Die folgenden Befehle zeigen Benutzern, wie sie einen Docker-Container mit einem bestimmten Volume-Treiber erstellen.

$ docker volume create --driver vieux/sshfs -o [email protected]:/home/session -o password=testPassword  sshVolume

Dieser Befehl erstellt mit dem vieux/sshfs-Treiber ein Docker-Datenvolume. Dieser Treiber ermöglicht es Entwicklern, entfernte Verzeichnisse mit der SSHFS-Technologie anzuhängen.

13. Ausführen von Containern, die Volumes mithilfe von Treibern erstellen

Sie können den folgenden Befehl verwenden, um Container zu erstellen und zu starten, die Volume-Treiber zum Erstellen ihres Daten-Volumes verwenden. Dieses Beispiel baut auf dem obigen auf.

$ docker run -d --name sshfsContainer --volume-driver vieux/sshfs --mount src=sshVolume,target=/tmp,[email protected]:/home/session,volume-opt=password=testPassword nginx:neueste

Das Tupel volume-opt übergibt die Optionen. Es ist nicht für jeden Anwendungsfall erforderlich. Wenn Sie jedoch volume-opt angeben, müssen Sie –mount verwenden Flag anstelle von -v oder –Lautstärke.

14. Dienste erstellen, die ein NFS-Volume verwenden

NFS oder Network File System ist ein verteiltes Dateifreigabesystem, das es uns ermöglicht, entfernte Dateisysteme so zu verwenden, als wären sie Teil des lokalen Dateisystems. Der folgende Befehl zeigt, wie ein Dienst erstellt wird, der ein NFS-Volume verwendet.

$ docker service create -d --name nfs-service --mount 'type=volume,source=nfsVolume,target=/tmp,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/var/docker-nfs,volume-opt=o=addr=10.0.0.10' nginx:latest

Dieser Befehl geht davon aus, dass unser NGS-Server auf 10.0.0.10 ausgeführt wird, und stellt /var/docker-nfs bereit Verzeichnis. Es verwendet auch NFSv3. Daher müssen Sie einige Anpassungen vornehmen, bevor Sie dies mit NFSv4 verwenden.

15. Container sichern

Volumes bieten Entwicklern eine flexible Möglichkeit, wichtige Containerdaten zu sichern. Zur Veranschaulichung erstellen wir zunächst einen neuen Container namens test-container.

$ docker run -v /data --name test-container ubuntu:xenial /bin/bash

Test-Container hat also ein Volume namens /data. Jetzt starten wir einen weiteren Container und mounten /data Volumen aus Testbehälter. Wir werden dann ein lokales Verzeichnis unseres Dateisystems als /backup mounten und speichern Sie dann den Inhalt von /data zu /backup Verzeichnis als backup.tar.

$ docker run --rm --volumes-from test-container -v $(pwd):/backup ubuntu:xenial tar cvf /backup/backup.tar /data

Die –Bände-von Option bedeutet, dass wir das Datenvolumen des Testcontainers tatsächlich in unseren neuen Container mounten.

16. Container-Sicherungen wiederherstellen

Es ist auch sehr einfach, Ihre Container aus Sicherungsdateien wiederherzustellen. Sie können die Daten im selben Container oder in einem bestimmten Container wiederherstellen. Wir zeigen Ihnen hier, wie Sie den Inhalt der im vorherigen Beispiel erstellten Datei backup.tar in einem anderen Container wiederherstellen.

$ docker run -v /data --name test-container2 ubuntu /bin/bash

Dieser Befehl erstellt einen weiteren neuen Container mit /data Volumen. Jetzt extrahieren wir den Inhalt der Datei backup.tar in dieses neue Datenvolumen.

$ docker run --rm --volumes-from test-container2 -v $(pwd):/backup ubuntu bash -c "cd /data &&tar xvf /backup/backup.tar --strip 1" 

Sie können Ihre Sicherungen und Wiederherstellungen mit diesen einfachen, aber flexiblen Docker-Volume-Befehlen ganz einfach automatisieren.

17. Anonyme Volumes entfernen

Weiter oben haben wir gesehen, wie man ein normal benanntes Volume löscht. Docker hat jedoch auch eine andere Art von Datenvolumes, die als anonyme Volumes bezeichnet werden. Werfen Sie einen kurzen Blick auf den folgenden Befehl, um zu sehen, wie sich der Löschvorgang zwischen benannten und anonymen Volumes unterscheidet.

$ docker run --rm -v /anon -v whats-in-a-name:/tmp busybox top

Der obige Befehl erstellt ein anonymes Volume namens /anon und ein benanntes Volume namens whats-in-a-name . Jetzt entfernt Docker diesen Container automatisch beim Beenden. Es wird jedoch nur /anon gelöscht Volume, nicht das Whats-in-a-Name-Volume. Sie müssen das mit dem Docker-Lautstärkebefehl rm.

löschen

18. Festlegen der Mount-Propagation

Mount-Propagation bezeichnet den Kontrollfluss zwischen dem ursprünglichen Mount und seinen Nachbildungen. Standardmäßig verwenden sowohl Bind Mount als auch Volumes die rprivate Einstellung. Dadurch wird jegliche Ausbreitung zwischen der Originalhalterung und ihren Nachbauten unterbunden. Sie können diese Einstellung überschreiben, indem Sie das Bind-Propagation-Tupel des Bind-Mount verwenden.

$ docker run -d -it --name test-container --mount type=bind,source="$(pwd)"/test,target=/tmp --mount type=bind,source="$( pwd)"/test,target=/temp,readonly,bind-propagation=shared nginx:latest

Dieser Befehl hängt die Datei /test ein Verzeichnis zweimal in den Container. Außerdem jede neue Ergänzung zur Datei /tmp mount wird in /temp widergespiegelt montieren. Sie können die Weitergabeeinstellung jedoch nicht überschreiben, wenn Sie Volumes verwenden. Es funktioniert nur, wenn Bind Mount auf einem Linux-Host verwendet wird.

19. Volume Command Manual anzeigen

Sie können die grundlegende Verwendung der Lautstärkebefehle einfach anzeigen, indem Sie den folgenden Befehl verwenden.

$ man Dockervolumen

Es enthält jedoch keine tiefergehenden Erklärungen. Wir empfehlen Ihnen daher, die offizielle Docker-Dokumentation zu Volumes und Bind-Mounts zu konsultieren.

20. Hilfeseite für Unterbefehle anzeigen

Verwenden Sie den folgenden Befehl, um die primären Optionen anzuzeigen, die für das Docker-Volume verfügbar sind.

$ docker volume --help

Sie können auch weitere Informationen zu einer bestimmten Option anzeigen, indem Sie die folgende Syntax verwenden.

$ docker volume BEFEHL --help$ docker volume ls --help

Abschlussgedanken

Docker-Volumes bieten eine dringend benötigte Einrichtung für moderne Anwendungen. Sie ermöglichen es Entwicklern, robuste, hochmoderne Apps und Dienste zu erstellen, indem sie Speicherprobleme beseitigen. Darüber hinaus erleichtern Docker-Volume-Befehle das Erstellen und Verwalten von Backups Ihrer Containerdaten. Damit Sie Datenmengen leichter meistern können, haben wir diesen durchdachten Ratgeber erstellt. Wir empfehlen Ihnen dringend, zuerst mit den grundlegenden Befehlen zu beginnen und dann schrittweise zu komplexen, realen Szenarien überzugehen. Hoffentlich haben wir Ihnen in diesem Leitfaden die Informationen bereitgestellt, nach denen Sie gesucht haben. Vergessen Sie nicht, uns bei Fragen einen Kommentar zu hinterlassen.


Linux
  1. 12 nützliche Wget-Befehlsbeispiele unter Linux

  2. 16 nützliche „cp“-Befehlsbeispiele für Linux-Anfänger

  3. DNF-Befehlsbeispiele für Anfänger

  4. Docker-Volumes verstehen

  5. 10 praktische Grep-Befehlsbeispiele für Entwickler

11 Nützliche Split-Befehlsbeispiele für Linux-Systeme

Erläuterung von Docker-Volumes mit Beispielen

Exa – Ein moderner Ersatz für ls Command

40 Nützliche Beispiele für Linux-PS-Befehle für angehende SysAdmins

Die 40 Go-Befehlsbeispiele für angehende Golang-Entwickler

12 Nützliche Beispiele für Linux-Datumsbefehle