Docker-Image-Handbuch: Löschen von Docker-Images, Stoppen von Containern und Entfernen aller Volumes

Docker ist weit verbreitet und eignet sich hervorragend zum Bereitstellen einer Anwendung in der Cloud (oder einer anderen Docker-fähigen Infrastruktur). Es ist auch nützlich für die lokale Entwicklung. Sie können komplexe Anwendungen schnell starten, isoliert entwickeln und trotzdem eine sehr gute Leistung erzielen.

Hier sind die wichtigsten Befehle, um Docker in Ihrem täglichen Geschäft effizient einzusetzen.

Alle Docker-Bilder auflisten

docker images 

In meinem Fall habe ich 3 Images installiert:

  • MySQL, Version 8.0.19, eine als neueste Version markiert
  • und Cassandra mit der neuesten Version.

Um weitere Informationen zu einem Bild zu erhalten, können Sie es überprüfen:

docker inspect mysql:latest

Dies gibt eine Liste mit Informationen zurück. Alternativ können Sie auch die Bild-ID verwenden, um die Informationen abzurufen:

docker inspect 3a5e53f63281

Die Ausgabe kann überwältigend sein. Daher gibt es eine praktische Option zum Filtern bestimmter Informationen:

docker inspect --format='{{.RepoTags}} {{.Config.Image}}' 3a5e53f63281

Docker-Images entfernen

Ein einzelnes Bild kann entfernt werden durch:

docker rm mysql:latest

In meinem Fall ist das Bild immer noch mit mysql: 8.0.19 gekennzeichnet . Um es vollständig zu entfernen, muss ich daher auch ein anderes Versions-Tag entfernen:

docker rm mysql:8.0.19

Um das Bild direkt zu entfernen, ist es einfacher, das Bild anhand der Bild-ID zu löschen:

docker image rm 3a5e53f63281 -f

Die Option -f erzwingt die Ausführung, da sonst eine Fehlermeldung angezeigt wird, wenn auf das Bild mit mehr als einem Tag verwiesen wird.

Starten Sie ein Docker-Image

Ein Bild kann im Vordergrund gestartet werden durch:

docker run cassandra

Wenn das Bild nicht vorhanden ist, wird es heruntergeladen. Sie können die Ausführung stoppen, indem Sie STRG + C drücken . Sie können es auch im Hintergrund ausführen, indem Sie die Option -d hinzufügen :

docker run -d mysql

Wenn der Container im Hintergrund gestartet wird, erhalten Sie die Container-ID.

Standardmäßig wird der Container isoliert ausgeführt. Daher können Sie keine Kommunikation damit herstellen, und in Ihrem aktuellen Verzeichnis werden keine Dateien gespeichert.

Vorwärtsöffnungen eines Containers

Sie können Ports weiterleiten, indem Sie die Option -p verwenden , um beispielsweise eine Seite anzuzeigen, die aus Ihrem Container verfügbar gemacht wird:

docker run -p 8080:80 nginx

Dieser NGINX-Container macht einen Webserver an Port 80 verfügbar. Bei Verwendung von -p 8080: 80 wird der lokale Port 8080 an den Container-Port 80 weitergeleitet.

Melden Sie sich in einem Container an

Manchmal ist es hilfreich, sich in einen Container einzuloggen. Dies ist nur möglich, wenn auf dem Container eine Shell installiert ist. Sie erhalten eine Fehlermeldung, wenn dies nicht der Fall ist.

Starten Sie zuerst den Container getrennt und geben Sie ihm einen Namen:

docker run -d --name my_container nginx

Dies gibt eine Container-ID zurück. Jetzt können Sie eine Shell im Container ausführen und Ihre Eingabe und Ausgabe mit den Optionen -i und -t anhängen :

docker exec -it my_container bash

Anstelle des Containernamens können Sie auch die zurückgegebene Container-ID für alle folgenden Vorgänge verwenden. Manchmal ist Bash nicht verfügbar. Daher können Sie auch versuchen, eine Basis-Shell zu starten:

docker exec -it my_container sh

Listet laufende Container auf

Nachdem Sie einen Container gestartet haben, können Sie sehen, dass alle laufenden Container ausgeführt werden:

docker ps

Durch Anhängen von -a werden auch verlassene Container aufgelistet:

docker ps -a

Geben Sie einen lokalen Ordner für einen Container frei

Sometimes it is useful to sync files between the container and the local filesystem. You can do it by running a container and using the -v option. On Linux and macOS, you can share a local temporary folder with a container by:

docker run --name=my_container -d -v $(pwd)/tmp:/var/log/nginx -p 8080:80 nginx

On windows you can run:

docker run --name=my_container -d -v %cd%/tmp:/var/log/nginx -p 8080:80 nginx

Stop running containers

It is possible to stop a running container by:

docker stop my_container

Stopping a container stops all processes but keeps changes within the filesystem.

Start a stopped container

A stopped container can be started by:

docker start my_container

Remove a container

To remove a stopped container, you can execute:

docker rm my_container

To stop and remove the container in one command, you can add the force option -f.

docker rm -f my_container

Create a volume and share it with multiple containers

An independent volume named SharedData can be created by:

docker volume create --name SharedData docker run --name=my_container -d -v SharedData:/var/log/nginx -p 8080:80 nginx docker run --name=my_container_2 -d -v SharedData:/var/log/nginx -p 8080:80 nginx

Both containers will have a shared folder, and files will be synced between both containers.

Remove a volume

To remove a volume, all containers that use the volume need to be removed.

docker rm -f my_container docker rm -f my_container_2 docker volume rm SharedData

Remove stopped containers and unused images

A safe tidy-up command is:

docker system prune -a

Remove all unused volumes

All unmounted volumes can be removed by:

docker volume prune

Conclusion

Creating containers, logging into containers, forwarding ports, and sharing volumes are the most important commands of your Docker command line interface. They build the foundation of systems like Kubernetes and enable us to create and run applications in isolation.

I hope you enjoyed the article. If you like it and feel the need for a round of applause, follow me on Twitter.

I am a co-founder of our revolutionary journey platform called Explore The World. We are a young startup located in Dresden, Germany and will target the German market first. Reach out to me if you have feedback and questions about any topic.

Happy Docker exploring :)

References

  • Docker command line documentation

    //docs.docker.com/engine/reference/commandline/docker/