Supprimer un conteneur et ses volumes anonymes
Dans cette étape, vous apprendrez comment supprimer un conteneur et ses volumes anonymes associés. Lorsque vous créez un conteneur, Docker peut créer des volumes pour stocker des données. Les volumes anonymes sont des volumes qui ne sont pas explicitement nommés lors de leur création. Ils sont généralement créés lorsqu'une instruction VOLUME
est présente dans le Dockerfile de l'image.
Exécutons un conteneur qui crée un volume anonyme. Nous utiliserons à nouveau l'image ubuntu
et spécifierons un point de montage de volume avec l'option -v
sans nom avant le deux-points.
docker run -d -v /data ubuntu sleep infinity
Cette commande crée un conteneur et un volume anonyme monté sur /data
à l'intérieur du conteneur. Vous devriez voir l'ID du conteneur s'afficher.
<container_id>
Inspectons maintenant le conteneur pour voir le volume créé. Remplacez <container_id>
par l'ID réel de votre conteneur en cours d'exécution.
docker inspect <container_id>
La sortie de docker inspect
est un grand objet JSON. Cherchez la section "Mounts"
. Vous devriez voir une entrée pour le volume monté sur /data
, et le champ "Name"
contiendra une longue chaîne générée aléatoirement, indiquant qu'il s'agit d'un volume anonyme.
...
"Mounts": [
{
"Type": "volume",
"Source": "<volume_name>",
"Target": "/data",
"Consistency": "consistent",
"BindOptions": null,
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
...
Vous pouvez également lister tous les volumes avec docker volume ls
. Vous devriez voir le volume anonyme listé.
docker volume ls
La sortie inclura le volume anonyme avec son nom généré aléatoirement.
DRIVER VOLUME NAME
local <volume_name>
Par défaut, lorsque vous supprimez un conteneur, ses volumes anonymes ne sont pas supprimés. Arrêtons d'abord le conteneur. Remplacez <container_id>
par l'ID réel de votre conteneur en cours d'exécution.
docker stop <container_id>
Vous devriez voir l'ID du conteneur s'afficher.
<container_id>
Maintenant, supprimez le conteneur arrêté sans supprimer ses volumes. Remplacez <container_id>
par l'ID réel de votre conteneur arrêté.
docker rm <container_id>
Vous devriez voir l'ID du conteneur s'afficher.
<container_id>
Vérifiez à nouveau les volumes avec docker volume ls
. Le volume anonyme devrait toujours être présent.
docker volume ls
La sortie inclura toujours le volume anonyme.
Créons maintenant un autre conteneur avec un volume anonyme, puis supprimons le conteneur et son volume ensemble.
docker run -d -v /data ubuntu sleep infinity
Récupérez le nouvel ID de conteneur.
<new_container_id>
Arrêtez le nouveau conteneur. Remplacez <new_container_id>
par l'ID réel.
docker stop <new_container_id>
Vous devriez voir l'ID du conteneur s'afficher.
<new_container_id>
Maintenant, supprimez le conteneur arrêté et ses volumes anonymes en utilisant l'option -v
avec docker rm
. Remplacez <new_container_id>
par l'ID réel.
docker rm -v <new_container_id>
Vous devriez voir l'ID du conteneur s'afficher.
<new_container_id>
Vérifiez à nouveau les volumes avec docker volume ls
. Le volume anonyme associé au conteneur que vous venez de supprimer devrait maintenant avoir disparu. Le premier volume anonyme que vous avez créé devrait toujours être présent.
docker volume ls
La sortie ne devrait afficher que le premier volume anonyme que vous avez créé.