Container und anonyme Volumes entfernen
In diesem Schritt lernen Sie, wie Sie einen Container und die damit verbundenen anonymen Volumes entfernen. Wenn Sie einen Container erstellen, kann Docker Volumes zum Speichern von Daten anlegen. Anonyme Volumes sind Volumes, die bei der Erstellung keinen expliziten Namen erhalten. Sie werden typischerweise erstellt, wenn eine VOLUME
-Anweisung im Dockerfile des Images vorhanden ist.
Lassen Sie uns einen Container starten, der ein anonymes Volume erstellt. Wir verwenden wieder das ubuntu
-Image und geben mit dem -v
-Flag einen Mount-Point ohne Namen vor dem Doppelpunkt an.
docker run -d -v /data ubuntu sleep infinity
Dieser Befehl erstellt einen Container und ein anonymes Volume, das im Container unter /data
eingehängt ist. Sie sollten die Container-ID ausgegeben sehen.
<container_id>
Nun untersuchen wir den Container, um das erstellte Volume zu sehen. Ersetzen Sie <container_id>
durch die tatsächliche ID Ihres laufenden Containers.
docker inspect <container_id>
Die Ausgabe von docker inspect
ist ein großes JSON-Objekt. Suchen Sie nach dem Abschnitt "Mounts"
. Sie sollten einen Eintrag für das unter /data
eingehängte Volume sehen, wobei das Feld "Name"
eine lange, zufällig generierte Zeichenkette ist - ein Indiz für ein anonymes Volume.
...
"Mounts": [
{
"Type": "volume",
"Source": "<volume_name>",
"Target": "/data",
"Consistency": "consistent",
"BindOptions": null,
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
...
Sie können auch alle Volumes mit docker volume ls
auflisten. Das anonyme Volume sollte sichtbar sein.
docker volume ls
Die Ausgabe enthält das anonyme Volume mit seinem zufällig generierten Namen.
DRIVER VOLUME NAME
local <volume_name>
Standardmäßig werden anonyme Volumes beim Entfernen eines Containers nicht gelöscht. Stoppen wir zunächst den Container. Ersetzen Sie <container_id>
durch die tatsächliche ID.
docker stop <container_id>
Sie sollten die Container-ID sehen.
<container_id>
Entfernen Sie nun den gestoppten Container ohne seine Volumes. Ersetzen Sie <container_id>
durch die tatsächliche ID.
docker rm <container_id>
Die Container-ID wird ausgegeben.
<container_id>
Prüfen Sie die Volumes erneut mit docker volume ls
. Das anonyme Volume sollte noch vorhanden sein.
docker volume ls
Das anonyme Volume wird weiterhin aufgelistet.
Erstellen wir nun einen weiteren Container mit anonymem Volume und entfernen dann Container und Volume gemeinsam.
docker run -d -v /data ubuntu sleep infinity
Notieren Sie die neue Container-ID.
<new_container_id>
Stoppen Sie den neuen Container. Ersetzen Sie <new_container_id>
durch die tatsächliche ID.
docker stop <new_container_id>
Die Container-ID wird ausgegeben.
<new_container_id>
Entfernen Sie nun den gestoppten Container und seine anonymen Volumes mit dem -v
-Flag bei docker rm
. Ersetzen Sie <new_container_id>
durch die tatsächliche ID.
docker rm -v <new_container_id>
Die Container-ID wird bestätigt.
<new_container_id>
Prüfen Sie die Volumes erneut. Das zum Container gehörende anonyme Volume sollte nun verschwunden sein. Das erste erstellte anonyme Volume sollte noch vorhanden sein.
docker volume ls
Die Ausgabe sollte nur das erste von Ihnen erstellte anonyme Volume anzeigen.