CodeGym /Cursos /Docker SELF /Fundamentos del almacenamiento de datos en Docker

Fundamentos del almacenamiento de datos en Docker

Docker SELF
Nivel 19 , Lección 0
Disponible

1.1 Volúmenes (Volumes)

El almacenamiento de datos en Docker es una parte importante del trabajo con contenedores. Los contenedores en sí mismos son efímeros, lo que significa que los datos dentro de ellos se perderán después de detener o eliminar el contenedor. Para conservar los datos entre ejecuciones y garantizar su almacenamiento a largo plazo, Docker ofrece dos tecnologías principales: volúmenes (volumes) y directorios vinculados (bind mounts).

Volúmenes (Volumes)

Los volúmenes son recursos gestionados por Docker para almacenar datos. Existen de manera independiente del ciclo de vida de los contenedores, lo que permite utilizarlos para el almacenamiento a largo plazo. Los volúmenes pueden ser creados y gestionados por Docker, proporcionando una forma práctica de almacenar datos fuera de los contenedores.

Ventajas de usar volúmenes

  1. Aislamiento del host: los volúmenes se almacenan en un directorio especial en el host, gestionado por Docker, lo que garantiza su aislamiento.
  2. Facilidad de gestión: Docker proporciona comandos convenientes para crear, eliminar y gestionar volúmenes.
  3. Compatibilidad y portabilidad: los volúmenes pueden ser fácilmente movidos entre diferentes hosts y utilizados con diferentes contenedores.

Ejemplo de creación y uso de volúmenes

Creación de un volumen:

Terminal

docker volume create my_volume

Uso de un volumen en un contenedor:

En este ejemplo, el volumen my_volume se monta en el directorio /data dentro del contenedor my_container.

Terminal

docker run -d --name my_container -v my_volume:/data nginx

1.2 Directorios Enlazados (Bind Mounts)

Los directorios enlazados permiten montar ciertos directorios del host dentro de los contenedores. Esto permite que los contenedores usen archivos y directorios que están en el host, lo cual es especialmente útil para el desarrollo y las pruebas, cuando es necesario trabajar con archivos locales.

Ventajas de usar directorios enlazados:

  1. Acceso directo a los archivos del host: los contenedores pueden usar directamente archivos y directorios que están en el host.
  2. Facilidad en desarrollo: los desarrolladores pueden modificar fácilmente archivos en el host y ver esos cambios en los contenedores en tiempo real.
  3. Flexibilidad: los directorios enlazados pueden ser cualquier directorio en el host, proporcionando gran flexibilidad en la gestión de datos.

Ejemplo de uso de directorios enlazados

Ejecutar un contenedor con un directorio enlazado:

Terminal

docker run -d --name my_container -v /path/on/host:/data nginx

En este ejemplo, el directorio /path/on/host en el host se monta en el directorio /data dentro del contenedor my_container.

Comparación entre Volúmenes y Directorios Enlazados:

Característica Volúmenes Directorios Enlazados
Almacenamiento de datos Gestionado por Docker Gestionado por el usuario
Aislamiento Aislados del sistema de archivos del host Usan el sistema de archivos del host
Rendimiento Optimizado para Docker Depende del sistema de archivos del host
Aplicabilidad Almacenamiento de datos a largo plazo Desarrollo y pruebas

1.3 Ejemplos prácticos

Ejemplos prácticos de uso

Ejemplo 1: Uso de volúmenes para bases de datos

Para garantizar un almacenamiento a largo plazo de los datos de la base de datos, se pueden usar volúmenes.

Crear un volumen:

Terminal

docker volume create db_data

Ejecutar un contenedor de base de datos usando un volumen:

Terminal

docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v 
db_data:/var/lib/postgresql/data postgres

Ejemplo 2: Uso de directorios vinculados para el desarrollo web

Para desarrollar una aplicación web, se pueden usar directorios vinculados para que los cambios en los archivos locales se reflejen inmediatamente en el contenedor.

Ejecutar un contenedor con un directorio vinculado:

Terminal

docker run -d --name web_dev -v $(pwd)/my_website:/usr/share/nginx/html nginx

En este ejemplo, el directorio de trabajo actual my_website se monta en el directorio /usr/share/nginx/html del contenedor nginx.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION