Las imágenes de Docker están integradas en forma de capas y los contenedores de Docker almacenan todos los datos que se utilizan, en la capa de escritura del contenedor que solo persiste hasta la vida útil del contenedor, es decir, ya no es accesible una vez que se elimina el contenedor. Esto también hace que sea difícil sacar los datos del contenedor si otros procesos los requieren.
Para conservar los datos independientemente del ciclo de vida del contenedor, de modo que los archivos estén disponibles en el sistema de archivos del host incluso si el contenedor ya no está disponible, Docker ofrece dos opciones:
- Volúmenes acoplables
- Fijar montajes
Aunque también podemos usar el montaje tmpfs si usa Docker en Linux y canalizaciones con nombre si usa Docker en Windows.
En este artículo, cubriremos los volúmenes de la ventana acoplable y los montajes de enlace con sus diferencias en términos de casos de uso y efectividad.
1. Volumen acoplable
Los volúmenes son los directorios o archivos que existen en el sistema de archivos del host y se montan en los contenedores para conservar los datos generados o modificados por ellos. Se almacenan en la parte del sistema de archivos del host administrado específicamente por Docker y no deben ser modificados por procesos que no sean de Docker . Los volúmenes son la forma preferida de almacenar datos de contenedores, ya que brindan un rendimiento eficiente y están aislados de las otras funcionalidades del host de Docker.
Podemos usar el siguiente comando para crear un volumen acoplable:
docker volume create <volume_name>
Podemos montar un volumen en varios contenedores simultáneamente y Docker no los elimina, incluso si ningún contenedor en ejecución los está utilizando. Para eliminar un volumen, podemos usar el siguiente comando -:
docker volume prune
En un sistema de archivos de Linux, podemos encontrar los volúmenes disponibles en la siguiente ruta ‘ /var/lib/docker/volumes/ ‘ , mientras que en Windows, podemos obtener la ubicación del volumen ejecutando el siguiente comando en el explorador de archivos:
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes
Para obtener más información sobre los volúmenes y cómo montarlos en un contenedor, haga clic aquí .
2.) Monturas de enlace
Este también es un mecanismo proporcionado por Docker para almacenar datos de contenedores en localhost, pero los procesos que no son de Docker también pueden acceder al directorio o archivo montado mediante montajes de enlace y depende de que el sistema de archivos de la máquina host tenga una estructura de directorio específica disponible porque utiliza la ruta absoluta para el enlace .
Los montajes de enlace tienen una funcionalidad limitada y no se pueden administrar directamente a través de la CLI de Docker, lo que los hace menos preferibles en comparación con los volúmenes. Además, permite que el contenedor modifique el sistema de archivos del host , es decir, puede crear, modificar o eliminar directorios de archivos importantes que también pueden afectar la seguridad y los procesos que no son de Docker .
3.) montajes tmpfs
Cuando usa Docker en Linux, también puede crear un volumen de almacenamiento para contenedores usando el montaje tmpfs . Pero a diferencia de los montajes y volúmenes vinculados, este tipo de montaje es temporal y persiste en la memoria del host.
Una vez que se detiene el contenedor, se elimina el montaje tmpfs y los archivos almacenados con él ya no estarán disponibles. Este tipo de montaje tiene un uso muy limitado y solo puede ser utilizado por usuarios de Linux. Además, no permite compartir datos montados entre contenedores .
4.) Tuberías con nombre
Cuándo usar Volúmenes
Los siguientes son algunos casos de uso potenciales para volúmenes:
- Los volúmenes se pueden usar para compartir datos entre múltiples contenedores de manera segura sin afectar el sistema de archivos del host.
- Proporcionan copias de seguridad y migración de datos convenientes de un host Docker a otro.
- Podemos administrar fácilmente los volúmenes mediante la CLI de Docker y las API de Docker, lo cual es una limitación en términos de montajes de enlace.
- La insignificancia de la estructura del sistema de archivos del host permite desacoplar la configuración del host de Docker del tiempo de ejecución del contenedor.
- Proporciona controladores de volumen que ayudan a almacenar datos en hosts remotos o proveedores de nube.
- Los volúmenes se almacenan en Linux VM, lo que proporciona una latencia más baja y un mayor rendimiento. Tienen un alto rendimiento en el escritorio Docker, lo que los convierte en una mejor opción para aplicaciones de escritura intensiva como el almacenamiento de datos.
Cuándo usar Monturas Bind
A pesar de las funcionalidades limitadas, podemos usar montajes de enlace en los siguientes casos:
- Se puede utilizar para proporcionar archivos de configuración compartidos entre el host y el contenedor. Ex- Docker monta ‘ /etc/resolv.conf ‘ en contenedores para la resolución de DNS.
- En caso de que se garantice que el sistema de archivos del host se mantendrá consistente y los procesos que no son de Docker no acceden al volumen montado, podemos usar montajes de enlace para almacenar datos.