Introducción
Volúmenes de datos de Docker es un concepto importante al contenerizar sus aplicaciones. Conocer este concepto es vital para garantizar la mejor experiencia de su aplicación contenerizada junto con una persistencia y gestión de datos confiables. Sin embargo, aunque este concepto es importante, también es confuso y complejo para muchos desarrolladores. Es importante que los desarrolladores y especialistas en DevOps puedan entender cómo configurar los Volúmenes de datos de Docker, comprender su uso correcto, conocer los diferentes tipos de volúmenes y qué tipo seleccionar para su aplicación.
Este tutorial se centra en explicar el concepto y el uso de los Volúmenes de datos de Docker. Una vez que haya completado este tutorial, habrá dominado la configuración y el trabajo con cualquier tipo de Volumen de datos de Docker.
Requisitos previos
Para seguir este tutorial, necesitará tener los siguientes elementos:
- Ubuntu instalado. Consulte nuestro Cómo configurar su servidor Ubuntu 18.04 tutorial para una referencia rápida.
- Usuario de Ubuntu con privilegios sudo. Este paso puede ser complicado, especialmente si no está familiarizado con Linux. Lea Configuración del archivo Sudoers de Linux para obtener una guía detallada.
- Docker instalado en Ubuntu. Para instalar Docker en su Ubuntu, puede seguir nuestro Cómo instalar & operar Docker en Ubuntu en la nube pública blog.
Aunque este tutorial se centra en la gestión de Docker en Ubuntu, docker los comandos son aplicables en todos los sistemas operativos con Docker instalado.
Entendiendo cómo funcionan los contenedores de Docker
Para comprender completamente los Volúmenes de datos de Docker, debe saber cómo funcionan los contenedores de Docker. En esta sección, proporcionamos un repaso de los conceptos básicos para los nuevos usuarios de Docker. Si sabe cómo funciona Docker o es un usuario experimentado de Docker, puede omitir esta sección y comenzar con los volúmenes de datos.
Los contenedores de Docker permiten ejecutar una aplicación sobre el sistema operativo host mediante la instalación de la plataforma Docker. Debido a que la plataforma Docker está instalada en el sistema operativo host, se forma una abstracción entre la máquina host y la aplicación invitada. A diferencia de una máquina virtual, un contenedor de Docker comparte su núcleo Linux con el sistema operativo host. Dado que Docker no necesita ningún sistema operativo adicional instalado sobre la máquina host, las aplicaciones de Docker son ligeras y accesibles en todas las máquinas host siempre que Docker esté instalado en esa máquina host.
Como no hay un sistema operativo invitado adicional, la plataforma Docker comparte recursos con la máquina host. Iniciar la aplicación Docker es rápido, pero la complejidad surge cuando se tienen que compartir los recursos. Docker no tiene su propia memoria o almacenamiento para la persistencia de datos. Estos recursos tienen que provenir de la máquina host. Las personas acostumbradas a usar máquinas virtuales encuentran difícil este proceso de intercambio y gestión de recursos. No tener el conocimiento adecuado puede llevar a resultados inesperados y no deseados. Aunque este tutorial asume que está familiarizado con el ecosistema de Docker, no dude en revisar nuestro tutorial detallado ¿Qué es Docker? Una descripción general del ecosistema de Docker para un repaso rápido.
Persistencia de datos utilizando volúmenes de datos de Docker
Cuando se trabaja con Docker, no se puede crear un volumen dentro de él directamente. Por lo tanto, para almacenar datos necesitamos crear un contenedor de volumen de Docker con un volumen adjunto. Para conectar nuestra aplicación Docker con este contenedor de volumen de datos, utilizamos el comando de Docker’s --volume-from para obtener el contenedor y adjuntarlo a nuestra aplicación.
Repasaremos el proceso paso a paso:
- Primero, cree un nuevo contenedor llamado,
my-container ejecutando el siguiente comando:
1docker create -v /tmp --name my-container ubuntu
Esto creará un nuevo contenedor en la carpeta /tmp . Puede cambiar el directorio de la carpeta según sea necesario. - Ahora que su contenedor de datos está listo, puede escribir en él ejecutando un nuevo contenedor Ubuntu con la bandera
--volume-from y luego ejecutando
bash. Todo lo que escribamos en
tmp el directorio se guardará en la carpeta
/tmp de nuestra máquina host:
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
La -t opción de línea de comandos llama a una terminal desde el interior del contenedor. La -i bandera hace que la conexión sea interactiva. En el símbolo del sistema bash para el contenedor Ubuntu, cree un archivo en /tmp:
1echo "Some sample data" > /tmp/sample_file - Finalmente, salga de este bash ejecutando el
exit comando. A continuación, ejecute el siguiente comando:
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
Encontrará su sample_file en este directorio. No hay restricción en la cantidad de volúmenes a especificar. Puede agregar tantos volúmenes como desee utilizando la --volumes-from bandera. También puede crear tantos contenedores de volumen de datos como desee.
Acceso a datos entre el host y el contenedor Docker
Para los lectores con experiencia en virtualización, esta opción es similar a la opción de carpeta compartida en máquinas virtuales. Aquí, en lugar de crear un data-only contenedor, ejecutamos nuestra aplicación Docker utilizando la imagen de Docker y sobrescribimos uno de sus directorios con el contenido de un directorio en el sistema host.
Un escenario común sería guardar los archivos de registro en la máquina host. Esto podría ser necesario para que podamos analizar estos archivos según sea necesario sin tener que entrar en la máquina. Para este escenario, suponga que está utilizando la imagen Docker de Nginx y desea almacenar sus archivos de registro en la máquina host. La imagen Docker de Nginx escribe los registros en el directorio /var/log/nginx , pero esto es /var/log/nginx dentro del contenedor Docker Nginx. Por lo tanto, esta ubicación no es accesible para la máquina host.
Para lograr nuestro objetivo, necesitaríamos crear una carpeta compartida para almacenar los registros entre la máquina host y la imagen Docker de Nginx. A continuación, ilustraremos este proceso en una guía sencilla paso a paso:
- Primero, cree un directorio en su máquina host donde desee almacenar los registros:
Luego, inicie su contenedor ejecutando el siguiente comando:1mkdir ~/my-nginxlogs
1docker run -d -v ~/my-nginxlogs:/var/log/nginx -p 5000:80 -i nginx
- Este
run comando acepta algunos argumentos, así que vamos a desglosarlo para entenderlo mejor:
- -p 5000:80: Configura un reenvío de puerto. El contenedor Nginx está escuchando en el puerto 80 por defecto, y esto mapea el puerto del contenedor Nginx 80 al puerto 5000 en el sistema host.
- -d: Desacopla el proceso y lo ejecuta en segundo plano.
- -v ~/my-nginxlogs:/var/log/nginx: Enlazamos el directorio /var/log/nginx desde el interior del contenedor Nginx al directorio /my-nginxlogs en la máquina host. Este : divide la ruta del host de la ruta del contenedor. La ruta del host siempre va primero.
Ahora que nuestro contenedor Nginx está funcionando, primero verifique si el servidor Nginx está sirviendo en el 5000 puerto de nuestra máquina host abriendo su navegador web y ejecutando la URL: http://localhost:5000. Una vez que aparezca la página de bienvenida, su servidor Nginx estará listo y estará creando registros en su carpeta /var/log/nginx .
Si abre la carpeta /my-nginxlogs de su máquina host, verá los archivos de registro aquí desde el contenedor Docker Nginx. Si realiza cambios en la carpeta /my-nginxlogs en la máquina host, mientras el contenedor Nginx está en ejecución, los cambios también se reflejarán en la carpeta /var/log/nginx del contenedor.
Conclusión
En este tutorial, adoptamos un enfoque integral para comprender los volúmenes de datos de Docker. Analizamos la creación de volúmenes para su aplicación, el intercambio de datos entre el host y el contenedor Docker, los tipos de datos y la persistencia de datos. Esto le ayudará a persistir datos en sus aplicaciones contenedorizadas, así como a gestionar el estado y la configuración de la aplicación.
Para obtener más información sobre Docker, consulte los siguientes tutoriales de nuestro blog:
- Cómo alojar un repositorio de imágenes de Docker y compilar imágenes de Docker con una instancia autogestionada de GitLab en Ubuntu 20.04
- Construir y desplegar una aplicación Flask con Docker en Ubuntu 20.04
- Cómo configurar un registro privado de Docker en Ubuntu 18.04
- Cómo compartir datos entre un contenedor Docker y un host
- Limpiar recursos de Docker – imágenes, contenedores y volúmenes
¡Feliz informática!
Comentarios
Aún no hay comentarios. Sea el primero.