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
- Aislamiento del host: los volúmenes se almacenan en un directorio especial en el host, gestionado por Docker, lo que garantiza su aislamiento.
- Facilidad de gestión: Docker proporciona comandos convenientes para crear, eliminar y gestionar volúmenes.
- 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:
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
.
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:
- Acceso directo a los archivos del host: los contenedores pueden usar directamente archivos y directorios que están en el host.
- Facilidad en desarrollo: los desarrolladores pueden modificar fácilmente archivos en el host y ver esos cambios en los contenedores en tiempo real.
- 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:
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:
docker volume create db_data
Ejecutar un contenedor de base de datos usando un volumen:
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:
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
.
GO TO FULL VERSION