29/06/2024

Infrastructure as Code

Comment supprimer un conteneur Docker en ligne de commande ?

I. Présentation

Dans ce tutoriel, nous allons voir comment supprimer un conteneur Docker en ligne de commande. La suppression des conteneurs Docker inutilisés est une bonne pratique qui permet de libérer de l'espace sur un système et de mieux s'organiser en nettoyant les éléments obsolètes et non nécessaires.

Nous vous montrerons comment réaliser cette opération en ligne de commande sur un système Linux, avec des options qui peuvent également être utilisées sur un système d'exploitation Windows.

Pour rappel, dans l'environnement Docker, un conteneur (également appelé container) est une instance d'une image Docker. Il est important de noter que la suppression d'une image et celle d'un conteneur sont deux opérations distinctes qui ne s'effectuent pas avec les mêmes options ou commandes.

Dans tous les cas, avoir accès avec les permissions nécessaires à l'utilisation de la commande "docker" est nécessaire pour suivre ce tutoriel.

II. Supprimer un conteneur Docker

A. Lister les conteneurs

La première chose à faire lorsque l'on souhaite supprimer un conteneur Docker est de lister les conteneurs actifs. Cela peut être réalisé à l'aide de la commande suivante :

# Lister les conteneurs Docker actifs
docker ps

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                   NAMES                                
9d4655d15753   nginx     "/docker-entrypoint.…"   4 minutes ago   Up 4 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp   nginx1                               
0bdfaca3f7ae   nginx     "/docker-entrypoint.…"   6 minutes ago   Up 6 minutes   80/tcp                                  recursing_banach 

Ici, nous voyons différents conteneurs Docker en cours d'exécution (notez bien le "CONTAINER ID" et le "NAME"). Une fois que l'on a identifié celui que l'on souhaite supprimer, il est nécessaire de l'arrêter via la commande suivante :

# Stopper un conteneur actif (via son nom ou ID)
docker stop <NAME>
docker stop <CONTAINER ID>

# Exemple :
docker stop nginx1
docker stop 9d4655d15753

À noter que le "container ID" peut être utilisé au même titre que le nom du conteneur. L'avantage d'utiliser le nom est que Docker propose une autocomplétion pour faciliter la saisie (utilisez la touche "Tab" après avoir saisi les premières lettres).

Si vous ne stoppez pas le conteneur avant de le supprimer, vous risquez de vous retrouver avec une erreur "Error response from daemon: You cannot remove a running container" :

Suite à cette première manipulation ou si le conteneur que vous souhaitez supprimer était déjà inactif, vous pourrez le voir dans vos conteneurs inactifs via l'option "-a" de "docker ps" :

# Lister les conteneurs Docker inactifs
docker ps -a 

À nouveau, vous vous retrouvez avec une liste des conteneurs Docker inactifs (mais toujours bien existant) sur votre système.

B. Supprimer un conteneur Docker inactif

Nous allons maintenant voir comment supprimer les conteneurs Docker que nous venons de lister. À nouveau, il faut avoir sous la main le nom ou l'ID du conteneur à supprimer :

# Supprimer un conteneur Docker 
docker rm <NOM>
docker rm <ID>

# Exemple :
docker rm nginx1
docker rm 9d4655d15753

C'est aussi simple que ça, attention cependant, la commande de suppression est souvent confondue avec la commande "rmi", qui elle, sert à supprimer des images.

III. Options avancées de suppression

A. Supprimer plusieurs conteneurs Docker en une commande

Il est possible de supprimer plusieurs conteneurs d'un seul coup, cela très simplement en enchainant leur nom ou ID les uns à la suite des autres, comme ceci :

# Supprimer plusieurs conteneurs d'un seul coup
docker rm <NOM> <NOM> <ID>

# Exemple
docker rm nginx1 nginx2 9d4655d15753

Cela permet d'aller beaucoup plus vite si l'on a plusieurs conteneurs à supprimer, notamment avec la tabulation sur le nom des conteneurs.

B. Forcer la suppression d'un conteneur actif

Nous avons vu plus haut que la suppression d'un conteneur Docker en cours d'exécution n'était pas possible et que cela renvoyait une erreur. Il nous est toujours possible de forcer cette suppression.

Attention cependant, il est conseillé d'utiliser cette option uniquement en cas de problème concernant le conteneur, comme l'impossibilité de le stopper proprement. La suppression d'un conteneur actif est en temps normale déconseillée pour les raisons suivantes :

  • Risque d'erreur : une autocomplétion incorrecte peut facilement conduire à la suppression du mauvais conteneur, surtout si l'on a l'habitude d'utiliser l'option "-f" de manière systématique.
  • Risque de corruption des données : en forçant la suppression d'un conteneur, vous risquez de laisser des fichiers ou des ressources système non libérés, ce qui peut entraîner une corruption des données ou des incohérences dans l'environnement Docker. Ainsi, si le conteneur supprimé travaille avec d'autres conteneurs sur le système (au niveau réseau ou via des volumes), sa suppression peut avoir un impact sur ces autres conteneurs.

La suppression forcée d'un conteneur Docker actif passe par l'option "-f" :

# Forcer la suppression d'un conteneur docker actif
docker rm <NAME/ID> -f

En règle générale, il reste toutefois recommandé d'arrêter correctement un conteneur avant de le supprimer, en utilisant la commande "docker stop" pour arrêter ses processus de manière ordonnée.

C. Supprimer les volumes

Attention cependant, la suppression d'un conteneur Docker n'entraine pas la suppression de l'image depuis laquelle il a été instancié, ni les potentiels volumes qu'il utilisait ! Si vous souhaitez que les volumes associés au conteneur Docker soient également supprimés, vous pouvez utiliser l'option "-v" :

# Supprimer un conteneur Docker et ses volumes
docker rm <NAME/ID> -v

Encore une fois, attention à l'impact potentiel sur d'autres conteneurs si le volume est utilisé par plusieurs conteneurs Docker.

IV. Conclusion

Dans ce tutoriel, nous avons vu comment supprimer des conteneurs Docker en utilisant différentes commandes et options. La suppression régulière des conteneurs inutilisés permet de libérer des ressources système et de garder un environnement Docker propre et performant. En appliquant les bonnes pratiques de maintenance, vous pouvez simplifier la gestion de vos conteneurs et optimiser votre flux de travail.

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

2 commentaires sur “Comment supprimer un conteneur Docker en ligne de commande ?

  • Bonjour,

    Merci pour ce tuto!
    Une autre commande aussi tres utile afin de nettoyer des éléments de containeur Docker et volumes inactifs:
    > docker system prune -a

    Bonne journée

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.