Verwendung des docker container rm Befehls zum Entfernen von Containern

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie Docker-Container effektiv mit dem Befehl docker container rm verwalten. Sie üben das Erstellen und Entfernen eines einfachen Containers, verstehen, wie Sie einen laufenden Container gewaltsam entfernen (force-remove), erkunden die Option zum Entfernen eines Containers zusammen mit seinen zugehörigen anonymen Volumes (anonymous volumes) und lernen schließlich, wie Sie alle beendeten Container effizient entfernen.

Durch praktische Übungen sammeln Sie Erfahrung im Umgang mit dem Lebenszyklus von Docker-Containern, was Ihnen ermöglicht, Ihre Docker-Umgebung aufzuräumen und Ressourcen effektiv zu verwalten.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") docker/SystemManagementGroup -.-> docker/prune("Remove Unused Docker Objects") subgraph Lab Skills docker/run -.-> lab-555120{{"Verwendung des docker container rm Befehls zum Entfernen von Containern"}} docker/ls -.-> lab-555120{{"Verwendung des docker container rm Befehls zum Entfernen von Containern"}} docker/ps -.-> lab-555120{{"Verwendung des docker container rm Befehls zum Entfernen von Containern"}} docker/rm -.-> lab-555120{{"Verwendung des docker container rm Befehls zum Entfernen von Containern"}} docker/pull -.-> lab-555120{{"Verwendung des docker container rm Befehls zum Entfernen von Containern"}} docker/volume -.-> lab-555120{{"Verwendung des docker container rm Befehls zum Entfernen von Containern"}} docker/prune -.-> lab-555120{{"Verwendung des docker container rm Befehls zum Entfernen von Containern"}} end

Container erstellen und entfernen

In diesem Schritt lernen Sie, wie Sie einen Docker-Container erstellen und entfernen. Ein Container ist eine ausführbare Instanz eines Images. Sie können Container mit der Docker-API oder CLI erstellen, starten, stoppen, verschieben oder löschen.

Zuerst laden wir ein einfaches Image herunter, das wir zum Erstellen eines Containers verwenden können. Wir verwenden das hello-world-Image, ein sehr kleines Image, das einfach "Hello from Docker!" ausgibt und sich beendet.

docker pull hello-world

Sie sollten eine Ausgabe sehen, die anzeigt, dass das Image heruntergeladen wird.

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Nachdem wir das Image haben, können wir einen Container daraus erstellen und ausführen. Dazu verwenden wir den Befehl docker run.

docker run hello-world

Dieser Befehl erstellt einen neuen Container aus dem hello-world-Image, führt den im Image definierten Befehl aus (der "Hello from Docker!" ausgibt) und beendet den Container anschließend. Sie sollten die Nachricht "Hello from Docker!" in Ihrem Terminal sehen.

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Nachdem der Container fertig ausgeführt wurde, stoppt er. Sie können alle Container, einschließlich der beendeten, mit dem Befehl docker ps -a anzeigen.

docker ps -a

Die Ausgabe sollte ähnlich wie folgt aussehen und den hello-world-Container mit dem Status "Exited" anzeigen.

CONTAINER ID   IMAGE         COMMAND    CREATED          STATUS                      PORTS     NAMES
<container_id>   hello-world   "/hello"   About a minute ago   Exited (0) About a minute ago             <container_name>

Nun entfernen wir den beendeten Container. Dazu verwenden wir den Befehl docker rm gefolgt von der Container-ID oder dem Namen. Die Container-ID oder den Namen können Sie der Ausgabe von docker ps -a entnehmen. Ersetzen Sie <container_id> durch die tatsächliche ID Ihres Containers.

docker rm <container_id>

Sie sollten die Container-ID ausgegeben sehen, was bestätigt, dass der Container entfernt wurde.

<container_id>

Um zu überprüfen, ob der Container entfernt wurde, können Sie erneut docker ps -a ausführen. Der hello-world-Container sollte nicht mehr aufgeführt sein.

docker ps -a

Die Ausgabe sollte den soeben entfernten hello-world-Container nicht mehr enthalten.

Laufenden Container gewaltsam entfernen (Force-remove)

Im vorherigen Schritt haben wir einen beendeten Container entfernt. Allerdings können Sie einen laufenden Container nicht direkt mit docker rm entfernen. In diesem Schritt lernen Sie, wie Sie einen laufenden Container gewaltsam entfernen (force-remove).

Zuerst erstellen wir einen Container, der aktiv bleibt. Wir verwenden das ubuntu-Image und führen einen Befehl aus, der den Container am Leben hält, wie sleep infinity. Falls Sie das ubuntu-Image nicht haben, laden Sie es zuerst herunter.

docker pull ubuntu

Nun starten wir einen Container aus dem ubuntu-Image im Detached-Modus (-d), sodass er im Hintergrund läuft.

docker run -d ubuntu sleep infinity

Sie sollten eine lange Zeichenkette sehen, die die Container-ID darstellt.

<container_id>

Überprüfen wir nun mit docker ps, ob der Container läuft.

docker ps

Sie sollten den ubuntu-Container mit dem Status "Up" aufgelistet sehen.

CONTAINER ID   IMAGE    COMMAND         CREATED          STATUS          PORTS     NAMES
<container_id>   ubuntu   "sleep infinity"   About a minute ago   Up About a minute ago             <container_name>

Versuchen Sie nun, diesen laufenden Container mit dem docker rm-Befehl und der Container-ID zu entfernen. Ersetzen Sie <container_id> durch die tatsächliche ID Ihres laufenden Containers.

docker rm <container_id>

Wahrscheinlich erhalten Sie eine Fehlermeldung, die besagt, dass Sie einen laufenden Container nicht entfernen können.

Error response from daemon: You cannot remove a running container <container_id>. Stop the container before attempting removal or use -f

Wie die Fehlermeldung andeutet, müssen Sie den Container zuerst stoppen oder das Flag -f (force) verwenden. Das Stoppen eines Containers kann etwas Zeit in Anspruch nehmen, insbesondere wenn der Prozess im Container nicht schnell auf das Stopp-Signal reagiert. Das gewaltsame Entfernen ist eine schnellere Methode, obwohl es generell empfohlen wird, Container möglichst ordnungsgemäß zu stoppen.

Lassen Sie uns den laufenden Container mit dem -f-Flag gewaltsam entfernen. Ersetzen Sie <container_id> durch die tatsächliche ID Ihres laufenden Containers.

docker rm -f <container_id>

Sie sollten die Container-ID ausgegeben sehen, was bestätigt, dass der Container gewaltsam entfernt wurde.

<container_id>

Um zu überprüfen, ob der Container entfernt wurde, führen Sie erneut docker ps aus. Der ubuntu-Container sollte nicht mehr aufgeführt sein.

docker ps

Die Ausgabe sollte den soeben entfernten ubuntu-Container nicht mehr enthalten.

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.

Alle gestoppten Container entfernen

In diesem Schritt lernen Sie, wie Sie alle gestoppten Container auf einmal entfernen können. Bei der Arbeit mit Docker können sich viele gestoppte Container ansammeln, die Speicherplatz belegen. Docker bietet einen praktischen Befehl zum Bereinigen dieser gestoppten Container.

Zuerst erstellen wir einige gestoppte Container. Wir verwenden das ubuntu-Image und führen einen Befehl aus, der sofort beendet wird.

docker run ubuntu echo "This container will stop immediately"

Sie sollten die Ausgabe "This container will stop immediately" sehen und der Container wird beendet.

Führen Sie den Befehl erneut aus, um einen weiteren gestoppten Container zu erstellen.

docker run ubuntu echo "Another stopped container"

Sie sollten die Ausgabe "Another stopped container" sehen und dieser Container wird ebenfalls beendet.

Listen wir nun alle Container auf, einschließlich der gestoppten, mit docker ps -a.

docker ps -a

Sie sollten die beiden gerade erstellten Container mit dem Status "Exited" sehen. Falls Sie frühere Container nicht entfernt haben, könnten auch diese angezeigt werden.

CONTAINER ID   IMAGE    COMMAND                  CREATED          STATUS                      PORTS     NAMES
<container_id_1>   ubuntu   "echo 'This containe…"   About a minute ago   Exited (0) About a minute ago             <container_name_1>
<container_id_2>   ubuntu   "echo 'Another stopp…"   About a minute ago   Exited (0) About a minute ago             <container_name_2>
...

Um alle gestoppten Container zu entfernen, können Sie den Befehl docker container prune verwenden. Dieser Befehl entfernt alle gestoppten Container.

docker container prune

Docker fordert eine Bestätigung vor dem Entfernen der Container an. Geben Sie y ein und drücken Sie Enter.

WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y

Sie sollten eine Liste der entfernten Container-IDs sehen.

Deleted Containers:
<container_id_1>
<container_id_2>
...

Total reclaimed space: ...

Um zu überprüfen, ob alle gestoppten Container entfernt wurden, führen Sie erneut docker ps -a aus.

docker ps -a

Die Ausgabe sollte nur laufende Container (falls vorhanden) und keine gestoppten Container mehr anzeigen.

Zusammenfassung

In diesem Lab haben Sie den grundlegenden Prozess der Verwaltung von Docker-Containern mit dem Befehl docker rm kennengelernt. Sie begannen mit der Erstellung und Ausführung eines einfachen hello-world-Containers und beobachteten dessen Lebenszyklus von der Erstellung bis zum Beenden. Anschließend übten Sie das Entfernen dieses gestoppten Containers anhand seiner ID oder seines Namens.

Darauf aufbauend erkundeten Sie fortgeschrittene Entfernungs-Szenarien. Sie lernten, wie man einen laufenden Container mit dem -f-Flag gewaltsam entfernt, und verstanden die Auswirkungen dieser Aktion. Weiterhin entdeckten Sie, wie man einen Container zusammen mit seinen zugehörigen anonymen Volumes mithilfe des -v-Flags entfernt, was eine saubere Bereinigung ermöglicht. Abschließend beherrschten Sie die effiziente Technik, alle gestoppten Container gleichzeitig zu entfernen - ein nützlicher Befehl zur Bereinigung Ihrer Docker-Umgebung.