Saltar al contenido

Cómo compartir datos entre la ventana acoplable de contenedores y el anfitrión

marzo 4, 2020

 

Introducción

En general, los contenedores de Docker son efímeras, corriendo el mismo tiempo que le toma a la orden emitida en el recipiente a completa. Por defecto, todos los datos creados en el interior del contenedor solo están disponibles en el interior del recipiente y sólo mientras el contenedor está en marcha. volúmenes

acoplables se pueden utilizar para compartir archivos entre un sistema principal y el contenedor del estibador. Por ejemplo, digamos que usted quisiera utilizar la imagen oficial del estibador Nginx y guardar una copia permanente de los archivos de registro de Nginx para analizar más adelante. Por defecto, la imagen nginx acoplable registrará en el directorio / var / log / nginx directorio en el interior del contenedor acoplable Nginx. Normalmente no es accesible desde el sistema de archivos host.

En este tutorial, vamos a explorar cómo hacer que los datos desde el interior del contenedor accesible en el ordenador central.

Requisitos previos

A este artículo sigue, se necesita un servidor de Ubuntu 18.04 con lo siguiente:

  • Un usuario no root con privilegios sudo, después de la configuración inicial del servidor con Ubuntu 18.04 guía.
  • acoplable instala con las instrucciones de los pasos 1 y 2 de Cómo instalar y utilizar estibador en Ubuntu 18.04.

Si eres nuevo en estibador, la serie acoplable Ecosistema proporciona una visión detallada de los conceptos clave.

Nota: A pesar de que los requisitos previos dan instrucciones para la instalación del estibador en Ubuntu 18.04, los comandos ventana acoplable volúmenes de datos Estibador en este artículo debería funcionar en otros sistemas operativos, siempre y cuando se instala estibador.

Paso 1 – Bindmounting un volumen

El siguiente comando creará un directorio llamado nginxlogs en el directorio principal de su usuario actual y bindmount en / var / log / nginx en el contenedor:

docker run --name=nginx -d -v ~
ginxlogs:/var/log
ginx -p 5000:80 nginx

  • ventana acoplable plazo –name = nginx -d -v ~ / nginxlogs: / var / log / nginx -p 5000: 80 nginx de

Let tomar un momento para examinar este comando en detalle:

  • –name = nginx nombres del recipiente, de manera que se puede referir a con mayor facilidad.
  • -d separa el proceso y lo ejecuta en segundo plano. De lo contrario, sólo estaríamos viendo un Nginx vacío rápido y no sería capaz de utilizar este terminal hasta que mataron a Nginx.
  • -v ~ / nginxlogs: / var / log / nginx establece un volumen bindmount enlaces que el directorio / var / log / nginx directorio desde el interior del contenedor de Nginx en el directorio ~ / nginxlogs en el ordenador central. Acoplable utiliza una: dividir la trayectoria del host de la ruta del contenedor, y el camino anfitrión siempre es lo primero.
  • -p 5000: 80 conjuntos de hasta un puerto hacia adelante. El contenedor Nginx está escuchando en el puerto 80 de forma predeterminada. Esta bandera se asigna el puerto 80 del contenedor al puerto 5000 en el sistema host. Especifica
  • nginx que el envase debe ser construido a partir de la imagen Nginx, que emite el comando nginx -g “demonio de fuera” para comenzar a Nginx.

Nota: El -v es muy flexible. Puede bindmount o el nombre de un volumen con sólo un ligero ajuste en la sintaxis. Si el primer argumento comienza con una / o ~ /, se está creando un bindmount. Retire eso, y usted está nombrando el volumen.

  • -v / ruta: en / contenedor se monta el directorio / ruta / anfitrión, / camino en el / ruta ruta / en / contenedor
  • -v: ruta / / en / contenedor crea un camino llamado volumen con relación a el anfitrión.

Para más información sobre los volúmenes nombre, consulte Cómo compartir datos entre acoplable Contenedores

Paso 2 – interfiriendo con el anfitrión

Ahora tenemos una copia de Nginx se ejecuta dentro de un recipiente acoplable en nuestra máquina, y el puerto de nuestra máquina host 5000 Se correlaciona directamente con esa copia del puerto de Nginx 80.

Carga de la dirección en un navegador web, utilizando la dirección IP o el nombre del servidor y el número de puerto: http: // your_server_ip: 5000. Debería ver:

Más interesante aún, si nos fijamos en el directorio ~ / nginxlogs en el host, vamos a ver el access.log creado por nginx del contenedor que mostrará nuestra solicitud: Gato

cat ~
ginxlogs/access.log

  • ~
    ginxlogs/access.log

Esto debería mostrar algo como:

Output203.0.113.0 - - [11/Jul/2018:00:59:11 +0000] "GET / HTTP/1.1" 200 612 "-"
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36" "-"

Si realiza cambios en la carpeta ~ / nginxlogs, podrás verlos desde el interior del contenedor Estibador en tiempo real, así.

Conclusión

En este tutorial demuestra cómo crear un volumen de datos acoplable a compartir información entre un contenedor y el sistema de archivos host. Esto es útil en entornos de desarrollo, donde es necesario tener acceso a los registros de depuración. Para obtener más información sobre el intercambio de datos persistentes entre los contenedores, echar un vistazo a cómo compartir datos entre acoplable Contenedores.