Einführung
In diesem Lab lernen Sie, wie Sie Docker-Volumes (Docker-Dateisysteme) mit dem Befehl docker volume rm verwalten. Sie beginnen damit, ein Volume zu erstellen und üben dann das Entfernen desselben.
Darüber hinaus werden Sie Szenarien untersuchen, in denen ein Volume von einem Container verwendet wird, und versuchen, es zu entfernen. Sie werden das Standardverhalten verstehen und erfahren, wie Sie die Entfernung eines Volumes erzwingen können, das derzeit an einen laufenden Container angehängt ist.
Erstellen Sie ein Volume
In diesem Schritt lernen Sie, wie Sie ein Docker-Volume (Docker-Dateisystem) erstellen. Volumes sind die bevorzugte Methode, um Daten zu speichern, die von Docker-Containern generiert und verwendet werden. Während Bind-Mounts (Verzeichnismounts) von der Verzeichnisstruktur des Host-Systems abhängen, werden Volumes vollständig von Docker verwaltet.
Um ein Volume zu erstellen, verwenden Sie den Befehl docker volume create gefolgt vom Namen, den Sie dem Volume geben möchten. Erstellen wir ein Volume mit dem Namen myvolume.
docker volume create myvolume
Wenn die Erstellung erfolgreich war, sollte der Name des Volumes in der Konsole angezeigt werden.
Lassen Sie uns nun überprüfen, ob das Volume erstellt wurde, indem wir alle verfügbaren Volumes mit dem Befehl docker volume ls auflisten.
docker volume ls
In der Ausgabe sollte myvolume aufgeführt sein.
Versuchen Sie, das Volume zu entfernen
In diesem Schritt versuchen Sie, das Volume zu entfernen, das Sie im vorherigen Schritt erstellt haben. Um ein Docker-Volume (Docker-Dateisystem) zu entfernen, verwenden Sie den Befehl docker volume rm gefolgt vom Namen des Volumes.
Versuchen wir, das Volume myvolume zu entfernen.
docker volume rm myvolume
Wenn die Entfernung erfolgreich war, sollte der Name des Volumes in der Konsole angezeigt werden.
Lassen Sie uns nun überprüfen, ob das Volume entfernt wurde, indem wir erneut alle verfügbaren Volumes auflisten.
docker volume ls
myvolume sollte nicht mehr in der Ausgabe erscheinen.
Entfernen Sie das Volume
Im vorherigen Schritt haben Sie versucht, das Volume zu entfernen. Jetzt stellen wir sicher, dass es entfernt wurde. Sie verwenden den gleichen Befehl docker volume rm gefolgt vom Namen des Volumes.
docker volume rm myvolume
Wenn das Volume im vorherigen Schritt erfolgreich entfernt wurde, sehen Sie möglicherweise eine Fehlermeldung, die darauf hinweist, dass das Volume nicht gefunden wurde. Dies ist zu erwarten und bestätigt, dass das Volume entfernt wurde. Wenn das Volume im vorherigen Schritt nicht entfernt wurde, wird es jetzt durch diesen Befehl entfernt.
Um zu bestätigen, dass das Volume entfernt wurde, listen Sie die Volumes erneut auf.
docker volume ls
myvolume sollte nicht in der Liste erscheinen.
Erstellen Sie ein Volume und einen Container, der es verwendet
In diesem Schritt erstellen Sie ein neues Volume und anschließend einen Docker-Container, der dieses Volume zur Datenspeicherung nutzt.
Zunächst erstellen wir ein neues Volume namens mydata.
docker volume create mydata
Als Nächstes führen wir einen einfachen ubuntu-Container aus und montieren das mydata-Volume in das Verzeichnis /app innerhalb des Containers. Wir führen auch einen Befehl aus, der etwas Text in eine Datei innerhalb des gemounteten Volumes schreibt.
Bevor wir den Container ausführen, laden wir das ubuntu-Image herunter, um sicherzustellen, dass es lokal verfügbar ist.
docker pull ubuntu
Jetzt führen wir den Container aus und schreiben in das Volume:
docker run -d --name mycontainer -v mydata:/app ubuntu bash -c "echo 'Hello from the volume!' > /app/greeting.txt && tail -f /dev/null"
Lassen Sie uns diesen Befehl analysieren:
docker run: Befehl zum Ausführen eines neuen Containers.-d: Führt den Container im detached-Modus (im Hintergrund) aus.--name mycontainer: Weist dem Container den Namenmycontainerzu.-v mydata:/app: Dies ist die Volume-Montage. Es montiert das Docker-Volume namensmydatain das Verzeichnis/appinnerhalb des Containers.ubuntu: Das zu verwendende Docker-Image.bash -c "echo 'Hello from the volume!' > /app/greeting.txt && tail -f /dev/null": Der Befehl, der innerhalb des Containers ausgeführt wird. Es schreibt "Hello from the volume!" in eine Datei namensgreeting.txtim Verzeichnis/app(das ist das gemountete Volume) und führt danntail -f /dev/nullaus, um den Container am Laufen zu halten.
Um zu überprüfen, dass der Container läuft und das Volume angehängt ist, können Sie den Container untersuchen.
docker inspect mycontainer
Suchen Sie im Output nach dem Abschnitt "Mounts". Sie sollten einen Eintrag für das mydata-Volume sehen, das an /app gemountet ist.
Versuchen Sie, das in Verwendung befindliche Volume zu entfernen
In diesem Schritt versuchen Sie, das mydata-Volume zu entfernen, während es noch vom Container mycontainer verwendet wird. Dies zeigt, was passiert, wenn Sie versuchen, ein Volume zu entfernen, das aktiv an einen laufenden Container gemountet ist.
Verwenden Sie den Befehl docker volume rm, um zu versuchen, das mydata-Volume zu entfernen.
docker volume rm mydata
Sie sollten eine Fehlermeldung sehen, die darauf hinweist, dass das Volume verwendet wird und nicht entfernt werden kann. Dies ist das erwartete Verhalten. Docker verhindert, dass Sie ein Volume entfernen, das derzeit an einen laufenden Container angehängt ist, um Datenverlust oder unerwartetes Verhalten zu vermeiden.
Um zu bestätigen, dass das Volume nicht entfernt wurde, listen Sie die Volumes erneut auf.
docker volume ls
Sie sollten immer noch mydata in der Ausgabe sehen.
Zwingen Sie die Entfernung des in Verwendung befindlichen Volumes
Im vorherigen Schritt haben Sie gelernt, dass Sie ein Volume, das derzeit von einem laufenden Container verwendet wird, nicht entfernen können. Es gibt jedoch Situationen, in denen Sie ein Volume entfernen müssen, auch wenn es verwendet wird. Docker bietet die Möglichkeit, die Entfernung eines Volumes zu erzwingen, indem Sie die -f- oder --force-Option mit dem docker volume rm-Befehl verwenden.
Hinweis: Das Erzwingen der Entfernung eines verwendeten Volumes kann zu Datenverlust und unerwartetem Verhalten des Containers führen, der es verwendet. Verwenden Sie diese Option mit Vorsicht.
Versuchen wir, das mydata-Volume zu erzwingen, während mycontainer noch läuft.
docker volume rm -f mydata
Sie sollten den Namen des Volumes in der Konsole sehen, was darauf hinweist, dass es entfernt wurde.
Jetzt überprüfen wir, ob das Volume entfernt wurde, indem wir die Volumes auflisten.
docker volume ls
Das mydata-Volume sollte nicht mehr in der Liste erscheinen.
Sie können auch den Status des mycontainer überprüfen.
docker ps
Der mycontainer kann immer noch in der Liste der laufenden Container erscheinen, aber er kann in einem fehlerhaften Zustand sein oder unerwartet stoppen, da sein Volume entfernt wurde.
Schließlich stoppen und entfernen wir den Container, um aufzuräumen.
docker stop mycontainer
docker rm mycontainer
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie Docker-Volumes mit dem docker volume-Befehl verwalten. Sie haben zunächst ein Volume namens myvolume mit docker volume create erstellt und seine Existenz mit docker volume ls überprüft. Anschließend haben Sie das Entfernen des Volumes mit docker volume rm geübt und die Entfernung durch erneutes Auflisten der Volumes bestätigt.
Sie haben auch das Verhalten von docker volume rm untersucht, wenn ein Volume von einem Container verwendet wird. Sie haben ein Volume und einen Container erstellt, der es nutzt, und beobachtet, dass der Versuch, das Volume direkt zu entfernen, fehlschlug. Schließlich haben Sie gelernt, wie Sie die Entfernung eines verwendeten Volumes erzwingen können, indem Sie die -f-Option zum docker volume rm-Befehl hinzufügen.



