Volúmenes

Clase 15 de 33Curso de Docker

Contenido del curso

Resumen

¿Qué son los volúmenes en Docker y por qué son importantes?

Docker nos ofrece diferentes maneras de manejar datos, entre las cuales se encuentran los volúmenes, una evolución estratégica respecto a los bind mounts. Los volúmenes presentan una solución estándar y robusta para el manejo de datos en entornos productivos. A diferencia de los bind mounts, los volúmenes aseguran más privacidad y seguridad, ya que el acceso está administrado completamente por Docker. Esto significa que, a menos que seamos usuarios privilegiados, no tendremos acceso directo a la parte del disco donde se almacenan los datos de los volúmenes. Este enfoque no solo mejora la seguridad sino que también mantiene nuestro sistema ordenado al evitar que los archivos de los contenedores estén dispersos.

¿Cómo listar y crear volúmenes en Docker?

Para interactuar con los volúmenes en Docker, podemos utilizar comandos similares a los que usamos para administrar contenedores, pero adaptados al contexto de los volúmenes.

  1. Listar volúmenes existentes:

    Podemos listar los volúmenes ya existentes en nuestro entorno Docker mediante el comando docker volume ls. Este comando nos mostrará todos los volúmenes que Docker ha estado creando por detrás de cámaras a medida que hemos estado trabajando.

    docker volume ls
  2. Crear un nuevo volumen:

    Para crear un nuevo volumen, usaremos el comando docker volume create, seguido del nombre que queremos darle al volumen. Por ejemplo, creamos un volumen llamado dbdata de la siguiente manera:

    docker volume create dbdata

    Este comando reserva un espacio en disco para el volumen, que Docker gestionará.

¿Cómo montar un volumen en un contenedor y verificar su uso?

Una vez que hemos creado un volumen, es momento de usarlo. Montar un volumen permite que un contenedor acceda a este espacio gestionado por Docker para almacenar y compartir datos.

  1. Operar con el volumen al crear un contenedor:

    Al crear un nuevo contenedor, especificamos que queremos montar el volumen utilizando la opción --mount. Este método ofrece más flexibilidad respecto a los bind mounts al permitirnos definir específicamente qué montamos y dónde. Por ejemplo:

    docker run -d --name db --mount source=dbdata,target=/data/db mongo

    Aquí estamos montando el volumen dbdata en el directorio /data/db del contenedor que corre la base de datos MongoDB.

  2. Verificar el volumen montado:

    Para asegurarnos de que el volumen esté correctamente montado, usamos el comando docker inspect. Este no solo nos muestra los detalles de configuración del contenedor, sino también los montajes activos:

    docker inspect db
  3. Aprovechar los datos persistentes:

    Una característica clave de los volúmenes es la persistencia. Si destruimos y creamos un nuevo contenedor, reutilizando el mismo volumen, los datos almacenados dentro se mantendrán intactos. Este es un ejemplo práctico:

    • Ejecutamos una base de datos y almacenamos datos.
    • Eliminamos y recreamos el contenedor MongoDB usando el mismo volumen.
    • Al consultar los datos, veremos que todo sigue disponible, sin necesidad de preocuparnos por archivos dispersos.

    Esto facilita una gestión segura y efectiva de datos entre contenedores.

¿Cuáles son las ventajas y desventajas de usar volúmenes en Docker?

Los volúmenes en Docker ofrecen una serie de ventajas atractivas para su uso en producción, pero también hay ciertas consideraciones a tener en cuenta.

Ventajas:

  • Seguridad y Orden: Los archivos generados por los contenedores no quedan regados por todo el disco, sino que Docker los gestiona centralmente.
  • Acceso Controlado: Ningún usuario no autorizado puede acceder a los datos almacenados en un volumen.
  • Facilidad de Uso: Resulta sencillo gestionar volúmenes, sin recordar rutas complejas.

Desventajas:

  • Restricción de Acceso: Si necesitamos interactuar directamente con los archivos, es menos accesible, ya que no sabemos qué archivos están allí sin entrar en el contenedor.
  • Menor Flexibilidad: Al desarrollar, puede ser más complicado si necesitamos manipular datos directamente desde el sistema local, ya que los volúmenes están abstractamente gestionados por Docker.

La elección entre usar volúmenes o bind mounts depende del contexto específico de seguridad, conveniencia, y accesibilidad que busquen de acuerdo a sus necesidades. Sin duda, los volúmenes aumentan la seguridad y organizan mejor los datos, pero la falta de acceso directo puede ser una desventaja en desarrollos ágiles. ¡Explora más sobre Docker y continúa perfeccionando tus habilidades!