Cómo usar el comando docker volume rm para eliminar volúmenes

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo administrar volúmenes de Docker utilizando el comando docker volume rm. Comenzará creando un volumen y luego practicará eliminándolo.

Además, explorará escenarios en los que un volumen está en uso por un contenedor y tratará de eliminarlo, comprendiendo el comportamiento predeterminado y cómo forzar la eliminación de un volumen que está actualmente adjunto a un contenedor en ejecución.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") subgraph Lab Skills docker/run -.-> lab-555262{{"Cómo usar el comando docker volume rm para eliminar volúmenes"}} docker/ls -.-> lab-555262{{"Cómo usar el comando docker volume rm para eliminar volúmenes"}} docker/ps -.-> lab-555262{{"Cómo usar el comando docker volume rm para eliminar volúmenes"}} docker/rm -.-> lab-555262{{"Cómo usar el comando docker volume rm para eliminar volúmenes"}} docker/inspect -.-> lab-555262{{"Cómo usar el comando docker volume rm para eliminar volúmenes"}} docker/create -.-> lab-555262{{"Cómo usar el comando docker volume rm para eliminar volúmenes"}} docker/volume -.-> lab-555262{{"Cómo usar el comando docker volume rm para eliminar volúmenes"}} end

Crear un volumen

En este paso, aprenderá cómo crear un volumen de Docker. Los volúmenes son la forma preferida de persistir los datos generados y utilizados por los contenedores de Docker. Mientras que los bind mounts (montajes de enlace) dependen de la estructura de directorios de la máquina host, los volúmenes son completamente administrados por Docker.

Para crear un volumen, se utiliza el comando docker volume create seguido del nombre que se desea dar al volumen. Vamos a crear un volumen llamado myvolume.

docker volume create myvolume

Debería ver el nombre del volumen impreso en la consola si la creación fue exitosa.

Ahora, vamos a verificar que el volumen se haya creado listando todos los volúmenes disponibles utilizando el comando docker volume ls.

docker volume ls

Debería ver myvolume en la lista de resultados.

Intentar eliminar el volumen

En este paso, intentará eliminar el volumen que creó en el paso anterior. Para eliminar un volumen de Docker, se utiliza el comando docker volume rm seguido del nombre del volumen.

Intentemos eliminar el volumen myvolume.

docker volume rm myvolume

Debería ver el nombre del volumen impreso en la consola si la eliminación fue exitosa.

Ahora, vamos a verificar que el volumen se haya eliminado listando nuevamente todos los volúmenes disponibles.

docker volume ls

Ya no debería ver myvolume en la salida.

Eliminar el volumen

En el paso anterior, intentó eliminar el volumen. Ahora, aseguremos que se haya eliminado. Utilice el mismo comando docker volume rm seguido del nombre del volumen.

docker volume rm myvolume

Si el volumen se eliminó correctamente en el paso anterior, es posible que vea un error que indica que el volumen no se encontró. Esto es lo esperado y confirma que el volumen se ha eliminado. Si el volumen no se eliminó en el paso anterior, este comando lo eliminará ahora.

Para confirmar que el volumen se ha eliminado, liste los volúmenes nuevamente.

docker volume ls

El myvolume no debe aparecer en la lista.

Crear un volumen y un contenedor que lo utilice

En este paso, creará un nuevo volumen y luego creará un contenedor de Docker que utilice este volumen para persistir datos.

Primero, creemos un nuevo volumen llamado mydata.

docker volume create mydata

A continuación, ejecutaremos un simple contenedor ubuntu y montaremos el volumen mydata en el directorio /app dentro del contenedor. También ejecutaremos un comando que escriba algún texto en un archivo dentro del volumen montado.

Antes de ejecutar el contenedor, descarguemos la imagen ubuntu para asegurarnos de que esté disponible localmente.

docker pull ubuntu

Ahora, ejecutemos el contenedor y escribamos en el volumen:

docker run -d --name mycontainer -v mydata:/app ubuntu bash -c "echo 'Hello from the volume!' > /app/greeting.txt && tail -f /dev/null"

Desglosemos este comando:

  • docker run: Comando para ejecutar un nuevo contenedor.
  • -d: Ejecuta el contenedor en modo desatendido (en segundo plano).
  • --name mycontainer: Asigna el nombre mycontainer al contenedor.
  • -v mydata:/app: Este es el montaje de volumen. Monta el volumen de Docker llamado mydata en el directorio /app dentro del contenedor.
  • ubuntu: La imagen de Docker a utilizar.
  • bash -c "echo 'Hello from the volume!' > /app/greeting.txt && tail -f /dev/null": El comando a ejecutar dentro del contenedor. Escribe "Hello from the volume!" en un archivo llamado greeting.txt en el directorio /app (que es el volumen montado) y luego ejecuta tail -f /dev/null para mantener el contenedor en ejecución.

Para verificar que el contenedor está en ejecución y que el volumen está adjunto, puede inspeccionar el contenedor.

docker inspect mycontainer

Busque la sección "Mounts" en la salida. Debería ver una entrada para el volumen mydata montado en /app.

Intentar eliminar un volumen en uso

En este paso, intentará eliminar el volumen mydata mientras todavía está siendo utilizado por el contenedor mycontainer. Esto demostrará lo que sucede cuando intentas eliminar un volumen que está activamente montado en un contenedor en ejecución.

Utilice el comando docker volume rm para intentar eliminar el volumen mydata.

docker volume rm mydata

Debería ver un mensaje de error que indica que el volumen está en uso y no se puede eliminar. Este es el comportamiento esperado. Docker impide que elimines un volumen que está actualmente adjunto a un contenedor en ejecución para evitar la pérdida de datos o un comportamiento inesperado.

Para confirmar que el volumen no se ha eliminado, liste los volúmenes nuevamente.

docker volume ls

Todavía debería ver mydata en la salida.

Forzar la eliminación de un volumen en uso

En el paso anterior, aprendiste que no puedes eliminar un volumen que está actualmente en uso por un contenedor en ejecución. Sin embargo, pueden haber situaciones en las que necesites eliminar un volumen incluso si está en uso. Docker proporciona una forma de forzar la eliminación de un volumen utilizando la bandera -f o --force con el comando docker volume rm.

Nota: Forzar la eliminación de un volumen en uso puede provocar pérdida de datos y un comportamiento inesperado en el contenedor que lo utiliza. Utilice esta opción con precaución.

Intentemos forzar la eliminación del volumen mydata mientras el contenedor mycontainer sigue en ejecución.

docker volume rm -f mydata

Deberías ver el nombre del volumen impreso en la consola, lo que indica que se ha eliminado.

Ahora, verifiquemos que el volumen se ha eliminado listando los volúmenes.

docker volume ls

El volumen mydata ya no debería estar en la lista.

También puedes comprobar el estado del contenedor mycontainer.

docker ps

El contenedor mycontainer puede seguir apareciendo en la lista de contenedores en ejecución, pero podría estar en un estado no saludable o detenerse inesperadamente porque se ha eliminado su volumen.

Finalmente, detengamos y eliminemos el contenedor para limpiar.

docker stop mycontainer
docker rm mycontainer

Resumen

En este laboratorio, aprendiste cómo gestionar volúmenes de Docker utilizando el comando docker volume. Comenzaste creando un volumen llamado myvolume con docker volume create y verificaste su existencia con docker volume ls. Luego, practicaste la eliminación del volumen utilizando docker volume rm y confirmaste su eliminación listando los volúmenes nuevamente.

También exploraste el comportamiento de docker volume rm cuando un volumen está en uso por un contenedor. Creaste un volumen y un contenedor que lo utilizara, y observaste que intentar eliminar el volumen directamente fallaba. Finalmente, aprendiste cómo forzar la eliminación de un volumen en uso agregando la bandera -f al comando docker volume rm.