Eliminar un contenedor y sus volúmenes anónimos
En este paso, aprenderás cómo eliminar un contenedor y sus volúmenes anónimos asociados. Cuando creas un contenedor, Docker puede crear volúmenes para almacenar datos. Los volúmenes anónimos son aquellos que no tienen un nombre explícito al crearse. Normalmente se crean cuando hay una instrucción VOLUME
en el Dockerfile de la imagen.
Ejecutemos un contenedor que cree un volumen anónimo. Usaremos nuevamente la imagen ubuntu
y especificaremos un punto de montaje de volumen usando la bandera -v
sin nombre antes de los dos puntos.
docker run -d -v /data ubuntu sleep infinity
Este comando crea un contenedor y un volumen anónimo montado en /data
dentro del contenedor. Deberías ver el ID del contenedor impreso.
<container_id>
Ahora, inspeccionemos el contenedor para ver el volumen creado. Reemplaza <container_id>
con el ID real de tu contenedor en ejecución.
docker inspect <container_id>
La salida de docker inspect
es un objeto JSON extenso. Busca la sección "Mounts"
. Deberías ver una entrada para el volumen montado en /data
, donde el campo "Name"
será una cadena larga generada aleatoriamente, indicando que es un volumen anónimo.
...
"Mounts": [
{
"Type": "volume",
"Source": "<volume_name>",
"Target": "/data",
"Consistency": "consistent",
"BindOptions": null,
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
...
También puedes listar todos los volúmenes usando docker volume ls
. Deberías ver el volumen anónimo listado.
docker volume ls
La salida incluirá el volumen anónimo con su nombre generado aleatoriamente.
DRIVER VOLUME NAME
local <volume_name>
Por defecto, cuando eliminas un contenedor, sus volúmenes anónimos no se eliminan. Primero detengamos el contenedor. Reemplaza <container_id>
con el ID real de tu contenedor en ejecución.
docker stop <container_id>
Deberías ver el ID del contenedor impreso.
<container_id>
Ahora, elimina el contenedor detenido sin eliminar sus volúmenes. Reemplaza <container_id>
con el ID real de tu contenedor detenido.
docker rm <container_id>
Deberías ver el ID del contenedor impreso.
<container_id>
Verifica los volúmenes nuevamente con docker volume ls
. El volumen anónimo debería seguir presente.
docker volume ls
La salida seguirá incluyendo el volumen anónimo.
Ahora, creemos otro contenedor con un volumen anónimo y luego eliminemos el contenedor junto con su volumen.
docker run -d -v /data ubuntu sleep infinity
Obtén el ID del nuevo contenedor.
<new_container_id>
Detén el nuevo contenedor. Reemplaza <new_container_id>
con el ID real.
docker stop <new_container_id>
Deberías ver el ID del contenedor impreso.
<new_container_id>
Ahora, elimina el contenedor detenido y sus volúmenes anónimos usando la bandera -v
con docker rm
. Reemplaza <new_container_id>
con el ID real.
docker rm -v <new_container_id>
Deberías ver el ID del contenedor impreso.
<new_container_id>
Verifica los volúmenes nuevamente con docker volume ls
. El volumen anónimo asociado al contenedor que acabas de eliminar ya no debería aparecer. El primer volumen anónimo que creaste debería seguir presente.
docker volume ls
La salida solo debería mostrar el primer volumen anónimo que creaste.