Volúmenes Dockerfile

Volúmenes Dockerfile
Cuando ejecuta un contenedor Docker, ninguno de los datos en ese contenedor se guarda. Lo que quiero decir es, digamos que comenzaste un contenedor Docker. Luego creó algunos archivos y carpetas en un directorio (digamos /datos) allá. Cuando detiene el contenedor, todos los archivos y carpetas en el /datos Se eliminará el directorio. Cuando comience el contenedor nuevamente, tendrá que recrear todos los archivos y carpetas si lo necesita nuevamente. Ninguno de los datos persistirá.

Puede usar volúmenes de Docker para guardar los cambios de un determinado directorio de sus contenedores Docker. En palabras simples, puede persistir los datos de sus contenedores Docker utilizando volúmenes Docker.

Puede decirle a Docker qué directorio de su contenedor Docker persistirá en su Dockfile Cuando crea imágenes de Docker personalizadas usando Dockfile.

En este artículo, le mostraré cómo usar volúmenes de Docker en Dockfile y cómo administrar estos volúmenes. Empecemos.

Uso de volúmenes en DockerFile:

En esta sección, crearé una imagen Docker personalizada del servidor Apache 2 desde la imagen Docker httpd: 2.4 y use volúmenes de Docker para persistir los datos de APACHE Webroot.

Primero, cree un nuevo directorio (digamos www3) para su imagen de Docker personalizada (digamos www: v1) y navegue a él:

$ mkdir www3 && cd www3

Ahora crea un Dockfile Con el siguiente comando:

$ touch dockerfile

Ahora edite el Dockfile presentar con nano o empuje editor de texto.

Nano:

$ nano dockerfile

Empuje:

$ vim dockerfile

Ahora agregue las siguientes líneas y guarde el archivo:

Aquí, De httpd: 2.4 significa que la imagen base de esta imagen de Docker personalizada es httpd: 2.4

WorkDir/usr/local/apache2/htdocs Significa, cuando se encuentre en la shell (interfaz de línea de comandos) de contenedores hechos con esta imagen personalizada, estará en el /usr/local/apache2/htdocs directorio del contenedor por defecto.

VOLUMEN /usr/local/apache2/htdocs significa, crear un nuevo volumen para cada uno de los contenedores creados a partir de esta imagen personalizada y persistir todos los archivos en el /usr/local/apache2/htdocs directorio de ese contenedor a este nuevo volumen.

Ahora que tienes tu Dockfile Listo, es hora de construir nuestra imagen de Docker personalizada (la llamaré www: v1).

Para construir su imagen de Docker personalizada www: v1 utilizando el Dockfile, Ejecute el siguiente comando:

$ Docker Build -t www: v1

La imagen de Docker personalizada www: v1 se crea con éxito.

Listado de imágenes de Docker disponibles localmente:

Puede enumerar todas las imágenes de Docker disponibles localmente con el siguiente comando:

$ Docker Image List

Como puedes ver, el www: v1 La imagen tiene un tamaño de aproximadamente 178 MB y se creó hace aproximadamente un minuto.

Trabajando con volúmenes y contenedores de Docker:

Hemos creado una imagen de Docker habilitada por el volumen www: v1 En la sección anterior de este artículo anterior.

Para crear un contenedor Docker (digamos app1) de la imagen de Docker personalizada www: v1, Ejecute el siguiente comando:

$ docker run -d -it - -name = app1 www: v1

El contenedor Docker app1 debe crearse.

Ahora ejecute el siguiente comando para mencionar el shell del app1 envase:

$ Docker Exec -it App1 /bin /Bash

Como puedes ver, estoy en el /usr/local/apache2/htdocs directorio por defecto.

Creemos un índice.html Archifique aquí con el siguiente comando:

$ Echo "

Hola mundo (app1)

"> índice.html

Ahora salga del app1 envase.

$ Salida

Ahora ejecute el siguiente comando para encontrar la dirección IP del app1 envase:

$ Docker Inspect App1 | dirección GREP

Como puede ver, la dirección IP es 172.17.0.2

Ahora desde cualquier navegador web, si visita la página en 172.17.0.2, deberías ver el índice.html página que acabas de crear.

Ahora probemos si la persistencia funciona o no.

Primero detener el app1 contenedor con el siguiente comando:

$ Docker Container Stop App1

Luego inicie el contenedor nuevamente con el siguiente comando:

$ Docker Container Start App1

Ahora encuentre nuevamente la dirección IP del contenedor:

$ Docker InspectApp1 | dirección GREP

Como puedes ver, el índice.html La página no cambia cuando accedo a la que accede desde mi navegador web. Significa que el volumen de Docker está persistiendo datos del app1 envase.

Gestión de volúmenes de Docker:

Puede enumerar todos los volúmenes de Docker en la computadora con el siguiente comando:

Lista de volumen de $ Docker

Como puede ver, tengo 2 volúmenes de Docker en mi computadora. La larga cadena hexadecimal como se marca en la captura de pantalla a continuación, es el volumen automático generado para el app1 envase.

Cuando crea un contenedor a partir de una imagen de Docker que usa volúmenes, se generará un nuevo volumen como este para cada contenedor que cree.

Por ejemplo, creé otro contenedor app2 desde el www: v1 imagen que construí desde el Dockfile que usa volumen.

Como puede ver, se genera un nuevo volumen.

Ambos volúmenes tienen diferentes datos. Los datos persisten solo para un contenedor para el que se generó. Por ejemplo, el volumen generado para el app1 El contenedor persiste los datos solo para el app1 envase. Lo mismo ocurre con el app2 envase. El volumen generado para el app1 El contenedor no almacenará datos del app2 envase.

Puede eliminar volúmenes si ya no lo necesita. Para que eso funcione, debe detener y eliminar el contenedor al que está conectado el volumen. Si intenta eliminar un volumen que está conectado a un contenedor, recibirá el siguiente mensaje de error.

Digamos que quieres eliminar el volumen para app2 contenedor, primero ejecute los siguientes comandos para detener y eliminar el contenedor:

$ Docker Container Stop App2
$ Docker Container RM App2<

Ahora retire el volumen que estaba conectado al app2 contenedor con el siguiente comando:

$ Docker Volumen RM 962B2D970BCD96DE860B348130A84AA86C0AAA55378B3DCE3525659679FF808

El volumen debe eliminarse.

Agregar archivos a volúmenes usando DockerFile:

Puedes usar el COPIAR comandar en tu Dockfile Para copiar archivos de su computadora de host a sus volúmenes Docker. De esa manera, cualquier contenedor que cree desde su imagen de Docker personalizada tendrá estos archivos de forma predeterminada. Puedes ver más sobre COPIAR en el Dockfile documentación.

Así que así es básicamente como trabajas con volúmenes de Docker usando Dockfile. Gracias por leer este artículo.