Descripción general de los volúmenes de Docker
Un volumen de Docker es un directorio o archivo que se monta en una ruta específica del sistema de archivos del host. Permite gestionar los datos de forma independiente del ciclo de vida del contenedor, lo que es más flexible y eficiente que empaquetar datos con la imagen del contenedor. Los volúmenes también pueden ser compartidos por varios contenedores simultáneamente.
Por qué se necesitan los volúmenes
Los contenedores son efímeros por naturaleza. Esto significa que cuando se elimina un contenedor, todos los datos almacenados en su interior también se pierden. Para preservar de forma permanente datos importantes como bases de datos, archivos de registro o archivos subidos por el usuario, debe usar volúmenes. Los volúmenes resuelven este problema, mejorando la estabilidad y flexibilidad de las aplicaciones basadas en contenedores.
Ventajas de los volúmenes
Los principales beneficios de usar volúmenes de Docker son los siguientes:
- Persistencia de datos: Los datos se conservan incluso si el contenedor se elimina.
- Compartición de datos: Varios contenedores pueden compartir el mismo volumen para acceder a los datos.
- Rendimiento: Puede proporcionar un mejor rendimiento de E/S que los montajes de enlace.
- Portabilidad: Los volúmenes no se incluyen en el Dockerfile, lo que permite que las imágenes se mantengan más ligeras.
- Copia de seguridad/Restauración: Los volúmenes se pueden respaldar y restaurar fácilmente.
Comandos clave de Docker Volume
Exploremos varios comandos para gestionar de manera eficiente los volúmenes de Docker. Intente combinar cada opción para crear, inspeccionar, eliminar y conectar volúmenes a los contenedores.
1. Creación y listado de volúmenes
2. Eliminación de volúmenes
3. Conexión de un volumen a un contenedor
Comando generado:
Combina los comandos.
Descripción:
`docker volume` Ejecutando el comando.
Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.
Tipos de volúmenes
En Docker, hay dos tipos principales de montajes para conectar datos a los contenedores: Volúmenes (Volumes) y montajes de enlace (Bind mounts). Cada uno tiene diferentes casos de uso y características.
1. Volúmenes (Volumes)
Este es el método más preferido para almacenar datos de forma persistente en Docker. Se almacena en un área específica del sistema de archivos del host gestionada por Docker.
- Creación y gestión: Se crean y gestionan a través de la CLI de Docker, usando los comandos `docker volume`.
- Ubicación: Se almacenan en la ruta `/var/lib/docker/volumes/` del host. No se recomienda que los usuarios accedan directamente a esta ruta interna.
- Características: Son independientes del ciclo de vida del contenedor y pueden ser compartidos entre varios contenedores. Ofrecen ventajas de rendimiento, especialmente en Docker Desktop.
2. Montajes de enlace (Bind mounts)
Cualquier lugar en el sistema de archivos del host puede montarse dentro de un contenedor. Esto es útil para acceder directamente a la estructura del sistema de archivos del host.
- Creación y gestión: Dependen directamente del sistema de archivos del host y no son gestionados explícitamente por Docker.
- Ubicación: Cualquier directorio o archivo en el sistema de archivos del host puede ser montado en un contenedor.
- Características: Son principalmente útiles en entornos de desarrollo para montar código fuente en un contenedor y reflejar los cambios en tiempo real, o cuando un contenedor necesita usar un archivo de configuración específico del host.
Ejemplos de uso
Comprenda cómo gestionar la persistencia de datos explorando varios escenarios en los que los comandos de volúmenes de Docker se aplican de forma práctica.
Crear y usar un volumen con nombre
docker volume create my_db_data
docker run -d --name my-mysql --mount source=my_db_data,target=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword mysql:latest
Crea un volumen llamado 'my_db_data' y lo monta en la ruta de almacenamiento de datos de un contenedor MySQL. Los datos de la base de datos se conservarán incluso si el contenedor se elimina.
Montaje de enlace de un directorio del host
docker run -d --name my-nginx-dev -p 80:80 --mount type=bind,source=/path/to/my/app,target=/usr/share/nginx/html nginx:latest
Monta el directorio actual del host (`/path/to/my/app`) en el directorio de servicio web de un contenedor Nginx (`/usr/share/nginx/html`), para que los cambios realizados en los archivos del host se reflejen inmediatamente en el contenedor.
Eliminar todos los volúmenes no utilizados
docker volume prune
Libera espacio en disco eliminando todos los volúmenes de Docker que no están conectados a ningún contenedor. Se mostrará un mensaje de confirmación.
Forzar la eliminación de un volumen específico (Advertencia)
docker volume rm -f old_volume
Elimina a la fuerza un volumen llamado 'old_volume', ya sea que esté en uso o no. Debe usarse con extrema precaución, ya que puede provocar la pérdida de datos.