Guide des images Docker: Comment supprimer des images Docker, arrêter des conteneurs et supprimer tous les volumes

Docker a été largement adopté et constitue un excellent moyen de déployer une application dans le cloud (ou une autre infrastructure prête pour Docker). Il est également utile pour le développement local. Vous pouvez démarrer rapidement des applications complexes, développer de manière isolée et avoir toujours de très bonnes performances.

Voici les commandes les plus importantes pour utiliser efficacement Docker dans votre entreprise quotidienne.

Lister toutes les images Docker

docker images 

Dans mon cas, j'ai 3 images installées:

  • MySQL, version 8.0.19, une balise comme dernière version
  • et Cassandra avec la dernière version.

Pour obtenir plus d'informations sur une image, vous pouvez l'inspecter:

docker inspect mysql:latest

Cela renverra une liste d'informations. Vous pouvez également utiliser l'ID d'image pour obtenir les informations:

docker inspect 3a5e53f63281

La sortie peut être écrasante. Par conséquent, il existe une option pratique pour filtrer certaines informations:

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

Supprimer les images Docker

Une seule image peut être supprimée par:

docker rm mysql:latest

Dans mon cas, l'image est toujours balisée avec mysql: 8.0.19 . Par conséquent, pour le supprimer complètement, je dois également supprimer une autre balise de version:

docker rm mysql:8.0.19

Pour supprimer l'image directement, il est plus facile de supprimer l'image par identifiant d'image:

docker image rm 3a5e53f63281 -f

L'option -f force l'exécution, sinon vous obtiendrez une erreur si l'image est référencée par plus d'une balise.

Démarrer une image Docker

Une image peut être démarrée au premier plan par:

docker run cassandra

Si l'image n'existe pas, elle sera téléchargée. Vous pouvez arrêter l'exécution en appuyant sur CTRL + C . Vous pouvez également l'exécuter en arrière-plan en ajoutant l' option -d :

docker run -d mysql

Si le conteneur est démarré en arrière-plan, vous recevez l'ID de conteneur.

Par défaut, le conteneur s'exécute de manière isolée. Par conséquent, vous ne pourrez pas communiquer avec lui et aucun fichier n'est stocké dans votre répertoire actuel.

Transférer les ports d'un conteneur

Vous pouvez transférer des ports à l'aide de l' option -p vers, par exemple, une page exposée à partir de votre conteneur:

docker run -p 8080:80 nginx

Ce conteneur NGINX expose un serveur Web sur le port 80. En utilisant -p 8080: 80, le port local 8080 est transféré vers le port de conteneur 80.

Connectez-vous à un conteneur

Parfois, il est utile de se connecter à un conteneur. Cela n'est possible que si le conteneur a un shell installé. Vous obtiendrez une erreur si ce n'est pas le cas.

Tout d'abord, démarrez le conteneur détaché et donnez-lui un nom:

docker run -d --name my_container nginx

Cela renverra un ID de conteneur. Vous pouvez maintenant exécuter un shell dans le conteneur et y attacher votre entrée et votre sortie en utilisant les options -i et -t :

docker exec -it my_container bash

Au lieu du nom du conteneur, vous pouvez également utiliser l'ID de conteneur renvoyé pour toutes les opérations suivantes. Parfois, bash n'est pas disponible. Par conséquent, vous pouvez également essayer de lancer un shell de base:

docker exec -it my_container sh

Répertorier les conteneurs en cours d'exécution

Après avoir démarré un conteneur, vous pouvez voir tous les conteneurs en cours d'exécution s'exécuter:

docker ps

En ajoutant -a , les conteneurs sortis seront également listés:

docker ps -a

Partager un dossier local avec un conteneur

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/