3.1 Fundamentos del montaje de volúmenes
Montar volúmenes (volumes) en contenedores es una de las funciones clave de Docker, que permite guardar datos fuera de los contenedores, asegurando su almacenamiento duradero y disponibilidad. Los volúmenes pueden ser utilizados para diversos propósitos, incluyendo el almacenamiento de archivos de configuración, bases de datos, logs y otros datos importantes. En esta lectura vamos a ver cómo montar volúmenes en contenedores, y daremos ejemplos prácticos.
Fundamentos del montaje de volúmenes
Los volúmenes, como ya mencionamos, existen independientemente del ciclo de vida de los contenedores. Se almacenan en un directorio especial de la máquina host y pueden ser conectados a cualquier contenedor.
Comando para montar volúmenes
Los volúmenes se montan en contenedores usando los parámetros -v
o --mount
al iniciar el contenedor.
3.2 Parámetro -v
Ejemplos de uso del parámetro -v
1. Montaje de un volumen en un contenedor
Creación de un volumen y su montaje en un contenedor:
Creación del volumen:
docker volume create my_volume
Ejecutar un contenedor con el volumen montado:
docker run -d --name my_container -v my_volume:/app nginx
En este ejemplo, el volumen my_volume
se monta en el directorio /app
del contenedor my_container
2. Montaje de múltiples volúmenes
Puedes montar múltiples volúmenes en un contenedor:
docker run -d --name my_container -v volume1:/app/data -v volume2:/app/logs nginx
En este ejemplo, el volumen volume1
se monta en el directorio /app/data
, y el volumen volume2
se monta en el directorio /app/logs
.
3.3 Parámetro --mount
El parámetro --mount
proporciona una forma más detallada de montar volúmenes, con la posibilidad de especificar varios parámetros.
1. Montar un volumen usando --mount
docker run -d --name my_container --mount source=my_volume,target=/app nginx
Este ejemplo es similar al ejemplo anterior con -v
, pero usa una sintaxis más detallada.
2. Montar con parámetros adicionales
docker run -d --name my_container --mount source=my_volume,target=/app,readonly nginx
En este ejemplo, el volumen se monta en modo solo lectura (readonly
).
3.4 Ejemplos prácticos
Ejemplo 1: Uso de volúmenes para una base de datos
Crear y usar un volumen para almacenar datos de la base de datos.
Crear un volumen:
docker volume create db_data
Ejecutar contenedor de base de datos montando un volumen:
docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v
db_data:/var/lib/postgresql/data postgres
En este ejemplo, los datos de la base de datos PostgreSQL se guardan en el volumen db_data
.
Ejemplo 2: Uso de volúmenes para archivos de configuración
Crear un volumen para almacenar archivos de configuración y montarlo en un contenedor.
Crear un volumen:
docker volume create config_data
Copiar archivos de configuración al volumen:
docker run --rm -v config_data:/app busybox sh -c "echo 'datos de configuración' > /app/config.txt"
Ejecutar contenedor usando el volumen para archivos de configuración:
docker run -d --name my_app -v config_data:/app/config nginx
En este ejemplo, los archivos de configuración se almacenan en el volumen config_data
, que se monta en el directorio /app/config
del contenedor.
Ejemplo 3: Logs del contenedor
Crear un volumen para almacenar logs de un contenedor y montarlo en el contenedor.
Crear un volumen:
docker volume create logs_data
Ejecutar contenedor montando el volumen para logs:
docker run -d --name my_app -v logs_data:/var/log/nginx nginx
En este ejemplo, los logs de Nginx se guardan en el volumen logs_data
.
3.5 Verificar el contenido de los volúmenes
Puedes verificar el contenido de un volumen montándolo en un contenedor temporal.
Ejemplo
Ejecutando un contenedor temporal con montaje de volumen:
docker run --rm -v my_volume:/app busybox ls /app
Este ejemplo mostrará el contenido del volumen my_volume
.
Eliminar volúmenes
Eliminar un volumen que ya no se utiliza.
Ejemplo
Eliminar el volumen:
docker volume rm my_volume
Si un contenedor está usando el volumen, Docker lanzará un error. Asegúrate de que los contenedores que usan el volumen estén detenidos y eliminados.
GO TO FULL VERSION