Docker

Docker

Tutorial Docker: Volúmenes Docker

Docker volúmenes: almacenamiento y gestión. Domina el almacenamiento y gestión de volúmenes en Docker mediante ejemplos prácticos.

Aprende Docker GRATIS y certifícate

En un contenedor Docker, el sistema de almacenamiento por defecto es efímero, lo que significa que cualquier dato creado o modificado dentro del contenedor se pierde irreversiblemente una vez que el contenedor se detiene o se elimina. Esta característica resulta útil para garantizar entornos limpios y predecibles, pero plantea un desafío cuando se quiere que los datos puedan persistir o puedan compartirse entre varios contenedores o sesiones de ejecución.

Para ello se utilizan volúmenes Docker. Los volúmenes son unidades de almacenamiento persistentes que existen independientemente de los contenedores, permitiendo que los datos persistan más allá del ciclo de vida de los contenedores individuales. Son muy útiles para almacenar bases de datos, configuraciones específicas, o cualquier dato que deba ser accesible de forma persistente o compartida entre contenedores.

Crear un volumen

El comando docker volume create se utiliza para generar un nuevo volumen que puede ser montado en uno o varios contenedores, proporcionando un espacio de almacenamiento que permanece constante incluso cuando los contenedores se detienen o se eliminan. Al ejecutar simplemente docker volume create seguido por un nombre opcional, se crea un volumen con la configuración predeterminada.

docker volume create mi-volumen

Este comando dispone de algunas opciones adicionales, como --driver, que permite especificar el controlador de volumen a usar. Aunque el predeterminado es el controlador local, que almacena los datos en el host donde se ejecuta Docker, otros controladores pueden facilitar el almacenamiento en la nube o en sistemas de archivos distribuidos. Otra opción útil es -o  /--opt, que permite establecer opciones específicas del controlador, como la ruta en el host para el controlador local, proporcionando así flexibilidad en la gestión de los datos.

Inspeccionar un volumen

Tras la creación de un volumen, es recomendable verificar su correcta configuración y existencia. 

Para esto, el comando docker volume inspect seguido del nombre del volumen ofrece una forma detallada de visualizar la configuración del volumen creado, incluyendo su ubicación, el controlador utilizado y cualquier opción especificada durante su creación.

docker volume inspect mi-volumen

Ver volúmenes montados

Vara verificar los volúmenes existentes se utiliza el comando docker volume ls:

Montar un volumen

Una vez creado el volumen, puede utilizarse montando el volumen cuando se ejecuta el contenedor mediante docker run

Docker proporciona dos maneras principales para montar volúmenes en contenedores: mediante el uso de la opción -v / --volume y mediante la opción --mount.

Montar un volumen con -v / --volume

La opción -v / --volume es la forma más antigua y sencilla de montar un volumen en un contenedor. Su sintaxis general es -v <nombre_del_volumen>:<ruta_en_el_contenedor> para montar un volumen Docker existente, o -v <ruta_en_el_host>:<ruta_en_el_contenedor> para montar un bind mount, que vincula directamente un directorio del sistema de archivos del host al contenedor.

Por ejemplo, para montar un volumen llamado mi_volumen en el contenedor, en la ruta /datos del contenedor, se usaría el siguiente comando al crear el contenedor:

docker run -v mi_volumen:/datos <nombre_de_imagen>

Esta sintaxis es concisa y fácil de usar, pero carece de la flexibilidad que algunos usuarios avanzados pueden requerir.

Montar un volumen con --mount

La opción --mount introduce una sintaxis más detallada y flexible para montar volúmenes, bind mounts y tmpfs mounts. Ofrece una clara distinción entre el tipo de montaje, el origen y el destino, y permite especificar opciones adicionales.

Su sintaxis general es --mount type=<tipo_de_montaje>,source=<nombre_del_volumen>,destination=<ruta_en_el_contenedor> para volúmenes, o --mount type=bind,source=<ruta_en_el_host>,destination=<ruta_en_el_contenedor> para bind mounts.

Por ejemplo, para montar el mismo volumen mi_volumen usando --mount, el comando sería:

docker run --mount type=volume,source=mi_volumen,destination=/datos <nombre_de_imagen>

La opción --mount es especialmente útil cuando se necesitan configuraciones más específicas, como montar el volumen en modo solo lectura (añadiendo ,readonly al final de la opción --mount), o cuando se utilizan tipos de montaje más avanzados.

Compartir un volumen entre contenedores

Para que varios contenedores tengan acceso a un mismo volumen, basta con montar ese mismo volumen en cada contenedor.

Por ejemplo, si se ha creado un volumen llamado mi_volumen_compartido, se puede montar en dos contenedores diferentes mediante:

docker run -d --name contenedor1 -v mi_volumen_compartido:/datos <imagen1>
docker run -d --name contenedor2 -v mi_volumen_compartido:/datos <imagen2>

Ambos contenedores tendrían acceso al mismo espacio de almacenamiento en /datos, permitiéndoles compartir archivos y datos de manera efectiva. Cualquier cambio realizado en el volumen desde un contenedor será visible para el otro contenedor, facilitando la comunicación y el intercambio de datos entre diferentes componentes de una aplicación.

Eliminar un volumen

Para eliminar un volumen y todos los datos contenidos en él, se puede usar el comando docker volume rm, seguido del nombre del volumen.

docker volume rm mi-volumen

Es importante tener en cuenta que esta acción es irreversible y resultará en la pérdida permanente de los datos almacenados en el volumen.

Aprende Docker GRATIS online

Ejercicios de esta lección Volúmenes Docker

Evalúa tus conocimientos de esta lección Volúmenes Docker con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Docker

Accede a todas las lecciones de Docker y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Accede GRATIS a Docker y certifícate

Certificados de superación de Docker

Supera todos los ejercicios de programación del curso de Docker y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  1. Comprender la naturaleza efímera del almacenamiento en contenedores Docker y la necesidad de volúmenes para la persistencia de datos.
  2. Aprender a crear volúmenes Docker usando el comando docker volume create, y cómo inspeccionar un volumen con docker volume inspect.
  3. Saber cómo montar volúmenes en contenedores usando las opciones -v / --volume o --mount.
  4. Entender el proceso para compartir un volumen entre varios contenedores, y cómo eliminar un volumen con docker volume rm.