Docker: contenedores y carcasas

De forma predeterminada, cuando lanza un contenedor, también utilizará un shell commandmientras lanza el contenedor como se muestra a continuación. Esto es lo que hemos visto en los capítulos anteriores cuando trabajábamos con contenedores.

En la captura de pantalla anterior, puede observar que hemos emitido el siguiente comando:

sudo docker run –it centos /bin/bash

Usamos este comando para crear un nuevo contenedor y luego usamos el comando Ctrl + P + Q para salir del contenedor. Asegura que el contenedor todavía exista incluso después de que salgamos del contenedor.

Podemos verificar que el contenedor todavía existe con el Docker. psmando. Si tuviéramos que salir del contenedor directamente, entonces el contenedor mismo se destruiría.

Ahora hay una forma más fácil de sujetar los contenedores y sacarlos limpiamente sin necesidad de destruirlos. Una forma de lograr esto es utilizando elnsenter mando.

Antes de ejecutar el nsenter comando, primero debe instalar el nsenterimagen. Se puede hacer usando el siguiente comando:

docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter

Antes de usar el nsenter comando, necesitamos obtener el ID de proceso del contenedor, porque esto es requerido por el nsentermando. Podemos obtener el ID del proceso a través de Dockerinspect command y filtrarlo a través del Pid.

Como se ve en la captura de pantalla anterior, primero usamos el docker pscomando para ver los contenedores en ejecución. Podemos ver que hay un contenedor en ejecución con el ID de ef42a4c5e663.

Luego usamos el Docker inspect comando para inspeccionar la configuración de este contenedor y luego usar el grepcomando para filtrar el ID del proceso. Y en la salida, podemos ver que el ID de proceso es 2978.

Ahora que tenemos el ID del proceso, podemos continuar y usar el nsenter comando para adjuntar al contenedor Docker.

nsenter

Este método permite que uno se adhiera a un contenedor sin salir del contenedor.

Sintaxis

nsenter –m –u –n –p –i –t comando containerID

Opciones

  • -u se usa para mencionar el Uts namespace

  • -m se usa para mencionar el mount namespace

  • -n se usa para mencionar el network namespace

  • -p se usa para mencionar el process namespace

  • -i s para que el contenedor se ejecute en modo interactivo.

  • -t se utiliza para conectar los flujos de E / S del contenedor al sistema operativo host.

  • containerID - Este es el ID del contenedor.

  • Command - Este es el comando para ejecutar dentro del contenedor.

Valor devuelto

Ninguna

Ejemplo

sudo nsenter –m –u –n –p –i –t 2978 /bin/bash

Salida

Desde la salida, podemos observar los siguientes puntos:

  • El mensaje cambia al bash shell directamente cuando emitimos el nsenter mando.

  • Luego emitimos el exitmando. Ahora, normalmente, si no usó elnsentercomando, el contenedor sería destruido. Pero notarías que cuando ejecutamos elnsenter comando, el contenedor todavía está en funcionamiento.