Comment supprimer un conteneur Docker en ligne de commande ?
Sommaire
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.
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
Merci pour ton retour et ta contribution 🙂