Saltar al contenido

Entendiendo las diferencias entre los Docker Volumes, Bind Mounts y tmpfs

  • por

¿Qué opciones tienes para asegurar que tus datos importantes no se pierdan cuando los contenedores se detienen o eliminan? Anteriormente habiamos hablado de los volumenes de docker aqui, pero en este articulo exploraremos las diferencias entre tres métodos comunes de persistencia de datos en Docker: los Docker Volumes, los Bind Mounts y los tmpfs. ¡Sigue leyendo para descubrir cuál es la mejor opción para tus necesidades!

Antes de continuar, te dejo una lista de articulos previos donde ya hemos hablado sobre distintos componentes de Docker:

Docker Volumes: La solución versátil para la persistencia de datos

Los Docker Volumes son una característica poderosa que ofrece Docker para manejar la persistencia de datos de manera eficiente y confiable. Estos volúmenes son almacenados en el sistema de archivos del host y son independientes del ciclo de vida del contenedor. Para crear un volumen de Docker utilizando la CLI de Docker, puedes ejecutar el siguiente comando:

docker volume create nombre_del_volumen

O utilizando Docker Compose, puedes definir un volumen de la siguiente manera:

volumes:
  nombre_del_volumen:
    driver: local

Ejemplo: Supongamos que deseas persistir los datos de una base de datos MySQL en un volumen de Docker llamado «mysql_data». Puedes configurarlo así:

docker volume create mysql_data

O en Docker Compose:

volumes:
  mysql_data:
    driver: local

La clave aqui, es que utlizando un Docker volume, a partir de los datos iniciales del contenedor, se creara un volumen (en `/var/lib/docker/volume`) el cual sobrevivirá a pesar de los reinicios o caidas del contenedor.

Bind Mounts: Integración directa con el sistema de archivos del host

Los Bind Mounts proporcionan una manera simple y directa de montar un directorio o archivo específico del sistema de archivos del host dentro del contenedor. Esto permite una integración estrecha entre los archivos del host y los del contenedor, lo que resulta útil para el desarrollo y la depuración. Para crear un bind mount, puedes utilizar la opción -v o --mount al ejecutar un contenedor con la CLI de Docker:

docker run -v /ruta/del/host:/ruta/del/contenedor imagen_del_contenedor

O en Docker Compose:

volumes:
  - /ruta/del/host:/ruta/del/contenedor

Ejemplo: Supongamos que tienes un sitio web y deseas montar el directorio de tu proyecto en un contenedor de Nginx. Puedes hacerlo así:

docker run -v /ruta/de/tu/proyecto:/usr/share/nginx/html nginx

O en Docker Compose:

volumes:
  - /ruta/de/tu/proyecto:/usr/share/nginx/html

Lo importante a destacar sobre los Bind Mounts, es que estos montan un directorio del sistema host, dentro del contenedor, cabe mencionar que si el directorio esta vacio, y en el contenedor existen datos, estos se sobreescribiran en el contenedor, son especialmente utiles en aplicaciones que inician con un directorio vacio y a medida que se van utilizando y generando datos, se guardan en el bind mount, haciendo estos archivos accesibles desde el sistema host.

tmpfs: Almacenamiento en memoria para datos temporales

El tmpfs es un tipo especial de sistema de archivos en memoria que se puede utilizar en Docker para almacenar datos temporales. A diferencia de los volúmenes y los bind mounts, los datos en un tmpfs no persisten después de que el contenedor se detiene o se elimina. Sin embargo, pueden ser útiles para aplicaciones que requieren un acceso rápido a datos temporales y no necesitan persistencia a largo plazo. Para montar un tmpfs en un contenedor de Docker, puedes utilizar la opción --tmpfs:

docker run --tmpfs /ruta/del/contenedor imagen_del_contenedor

Ejemplo: Si estás ejecutando un contenedor que necesita almacenar archivos temporales en memoria, puedes hacerlo así:

Conclusión: Elige la mejor opción para tus necesidades

En resumen, Docker ofrece varias opciones para la persistencia de datos: los Docker Volumes, los Bind Mounts y los tmpfs. Cada uno tiene sus propias ventajas y casos de uso específicos. Los Docker Volumes son ideales para datos que necesitan persistencia a largo plazo y son independientes del ciclo de vida del contenedor. Los Bind Mounts son perfectos para integrar directamente los archivos del host en el contenedor. Y los tmpfs son útiles para datos temporales que necesitan un acceso rápido en memoria. ¡Elige la opción que mejor se adapte a tus necesidades y aprovecha al máximo Docker para gestionar tus datos de manera eficiente y confiable!

Con esto, espero que ahora tengas una comprensión más clara de las diferencias entre los Docker Volumes, los Bind Mounts y los tmpfs. Si tienes alguna pregunta o comentario, no dudes en dejarlos abajo. ¡Gracias por leer!

Join the conversation

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *