También puede compartir un volumen de Docker a muchos contenedores. Hablemos de un escenario para averiguar por qué es importante.
Digamos que tiene una aplicación web de PHP. Ahora desea probar si funciona en PHP versión 5.4, 7.0, 7.1 y 7.2. Puede crear un volumen de Docker, llamémoslo Aplicación Web. Luego copie los archivos del código fuente de su aplicación web PHP al volumen de Docker Aplicación Web. Luego puede crear contenedores de diferentes versiones de PHP y adjuntar el volumen de Docker Aplicación Web a la raíz web de todos estos contenedores. De esa manera, puede probar fácilmente cómo funciona su aplicación web en diferentes versiones de PHP.
En este artículo, le mostraré cómo usar volúmenes de Docker para compartir datos entre contenedores y la computadora host. Empecemos.
Antes de que pueda agregar un volumen de Docker a su contenedor, debe crear un volumen de Docker.
Para crear un volumen de Docker (digamos Datos1), ejecute el siguiente comando:
$ Docker Volumen Crear datos1
Datos1 Se debe crear volumen.
Listado de volúmenes Docker:
Puede enumerar todos los volúmenes Docker que creó con el siguiente comando:
Lista de volumen de $ Docker
Como puede ver, se enumeran todos los volúmenes de Docker. Ahora mismo, solo tengo Datos1 Volumen de acopolador. Si creara más, aparecería aquí.
Inspección de volúmenes de Docker:
Puede ver más información sobre cierto volumen de Docker (digamos Datos1) con el siguiente comando:
$ Docker Volumen Inspect Data1
Como puede ver, mucha información sobre el Datos1 El volumen se enumera en formato JSON. El mas importante es Punto de montaje. Punto de montaje le indica la ruta del sistema de archivos local donde está montado el volumen. Aquí el Datos1 El volumen se monta en /var/lib/docker/volumes/data1/_data En mi sistema de archivos local. Le mostraré cómo modificar los datos en sus volúmenes Docker desde su computadora host en una sección posterior de este artículo a continuación.
Agregar volúmenes a contenedores y compartir volúmenes entre contenedores:
Ahora voy a crear un contenedor Docker simple desde el httpd: 2.4 Imagen de Docker para ejecutar Apache 2 Webserver. Entonces voy a montar el Datos1 volumen a /usr/local/apache2/htdocs Directorio de ese contenedor Docker. También le daré un nombre al contenedor (digamos www) solo para administrarlo fácilmente.
Para hacer eso, ejecute el siguiente comando:
$ docker run -d -it --name = www - -mount source = data1, destino =/usr/local/apache2/htdocs
httpd: 2.4
El contenedor www debe crearse.
Ahora para verificar si el Datos1 el volumen se montó al www contenedor, ejecute el siguiente comando:
$ Docker Inspect www
Es una larga lista de información. Pero en el Montura, puedes ver eso, el nombre del volumen es Datos1, está montado a /usr/local/apache2/htdocs sobre el www envase.
Ahora me voy a conectar al www contenedor y ejecutar el intento Shell allí con el siguiente comando:
$ Docker Exec -it www bash
Como puede ver, Bash Shell está funcionando.
Ahora creemos un archivo HTML simple en el /usr/local/apache2/htdocs directorio donde el Datos1 El volumen está montado.
$ echo "Hello World">/usr/local/apache2/htdocs/index.html
Ahora salga del www Container Docker con el siguiente comando:
$ Salida
Ahora descubra la dirección IP del www contenedor con el siguiente comando:
$ Docker Inspect www | dirección GREP
Como puede ver, la dirección IP del contenedor www es 172.17.0.2 (en mi caso).
Cuando accedo al www Contenedor Desde el navegador web, puede ver que la página que acabo de crear se muestra.
Ahora voy a crear otro contenedor www2 y adjuntar el Datos1 volumen de la misma manera y ver si los cambios en el Datos1 Volumen (montado en /usr/local/apache2/htdocs en www y www2 contenedor) desde un contenedor es visible para el otro contenedor.
Para crear un nuevo contenedor www2, y adjuntar el Datos1 Volumen para él, ejecute el siguiente comando:
$ docker run -d -it --name = www2 - -mount source = data1, destino =/usr/local/apache2/htdocs
httpd: 2.4
Ahora encontremos la dirección IP del www2 contenedor con el siguiente comando:
$ Docker Inspect WWW2 | dirección GREP
Como puede ver, obtengo la misma página cuando accedo al www2 contenedor de un navegador web. Significa que los datos del www El contenedor persistió y compartió con el www2 envase.
Ahora voy a hacer cambios en el índice.html (en el Datos1 volumen montado en /usr/local/apache2/htdocs) página del www2 contenedor y verifique si el cambio se refleja en ambos www y www2 contenedores.
Como puede ver, los cambios realizados en un contenedor (www2 en este caso) se refleja en el otro contenedor (www en este caso).
Acceso a los volúmenes de Docker desde la computadora host:
NOTA: Para que esto funcione, debe iniciar sesión como raíz usuario.
Puede ejecutar el siguiente comando para encontrar la ruta del Datos1 Volumen de Docker en su computadora host:
# Docker Volume Inspect Data1
Como puedes ver, el Datos1 el volumen está en el /var/lib/docker/volumes/data1/_data Directorio de mi computadora host.
Ahora navegue al /var/lib/docker/volumes/data1/_data directorio con el siguiente comando:
# cd/var/lib/docker/volumes/data1/_data
Como puedes ver, el índice.html El archivo que acabamos de crear está ahí.
# ls
También el contenido del índice.html el archivo es el mismo.
Ahora, editemos el índice.html archivo y ver si los cambios se reflejan en el www y www2 contenedores.
# índice nano.html
Cambié el contenido del índice.html Archivo a esto:
Como puede ver, los cambios se reflejan en el www y el www2 contenedores.
Si lo desea, también puede eliminar un volumen de Docker. Para eliminar un volumen de Docker, digamos Datos2, Ejecute el siguiente comando:
$ Docker Volumen RM Data2
El volumen de Docker Datos2 debe eliminarse permanentemente.
Así es como comparte volúmenes de Docker entre contenedores y la computadora host. Gracias por leer este artículo.