Entrar en el caparazón de un contenedor Docker

Isaac Tony 23 agosto 2022
  1. Use docker exec para ingresar al shell de un contenedor Docker
  2. Utiliza docker container attach para entrar en el shell de un contenedor Docker
  3. Use Secure Shell (SSH) para acceder al shell de un contenedor Docker
Entrar en el caparazón de un contenedor Docker

Este tutorial demostrará cómo ingresar al shell del contenedor de Docker de varias maneras.

Use docker exec para ingresar al shell de un contenedor Docker

Necesitamos tener un contenedor en funcionamiento para usar este comando. Podemos verificar el estado de los contenedores en nuestro sistema usando el siguiente comando.

docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED      STATUS                    PORTS     NAMES
38086474cb6c   debian    "bash"                   2 days ago   Exited (0) 2 days ago               epic_jackson
1c955bac1a84   ubuntu    "bash"                   2 days ago   Exited (0) 2 days ago               musing_morse
1296f9b9d330   nginx     "/docker-entrypoint.…"   2 days ago   Exited (255) 2 days ago   80/tcp    distracted_napier

Si no tenemos ningún contenedor en ejecución, podemos crear uno fácilmente. Usaremos la imagen base rabbitmq para configurar un contenedor.

Comenzaremos extrayendo la imagen base del registro usando el comando docker pull antes de crear un contenedor, como se muestra a continuación.

$ docker run -d rabbitmq

Producción :

Dcad9f270643802092ab525796897c357026767863dade831e8c7d7d82c45712

Ahora, deberíamos tener un contenedor en ejecución. Una vez más, podemos comprobarlo usando el comando docker ps.

$ docker ps -a

Producción :

CONTAINER ID   IMAGE      COMMAND                  CREATED              STATUS          PORTS                                                 NAMES
dcad9f270643   rabbitmq   "docker-entrypoint.s…"   About a minute ago   Up 57 seconds   4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   inspiring_moore

Usaremos el comando docker exec junto con la etiqueta -it para ingresar al contenedor, interactuar con los archivos o realizar alguna depuración.

El comando exec nos permitirá ejecutar un comando en el contenedor en ejecución, mientras que la etiqueta -it nos permitirá abrir el contenedor de forma interactiva.

Finalmente, el comando sh abrirá un indicador de shell básico para ejecutar nuestros comandos dentro del contenedor.

isaactonyloi@DESKTOP-HV44HT6:~$ docker exec -it dcad9f270643 sh
#

Ahora que hemos ingresado al contenedor Docker, podemos ejecutar varios comandos desde dentro del contenedor. Escriba el comando exit y presione enter desde este modo de regreso a la terminal principal.

Utiliza docker container attach para entrar en el shell de un contenedor Docker

También podemos conectarnos a un contenedor en ejecución usando el comando docker container added. Esto nos permite adjuntar los flujos de salida, entrada y error del terminal a un contenedor en ejecución usando la ID del contenedor.

Luego podemos ejecutar varios comandos, aceptar entradas y depurar el contenedor especificado. Como se mencionó anteriormente, necesitamos tener un contenedor en ejecución para adjuntar nuestros flujos de salida, entrada y error.

Para este propósito, usaremos docker ps como se muestra a continuación. Seguimos usando el contenedor rabbitmq de la sección anterior.

$ docker ps -a

Producción :

CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS          PORTS                                                 NAMES
dcad9f270643   rabbitmq   "docker-entrypoint.s…"   39 minutes ago   Up 38 minutes   4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   inspiring_moore

En caso de que el contenedor docker se haya detenido, entonces, en ese caso, debemos iniciarlo primero usando el comando docker start como lo hemos hecho aquí.

$ docker start dcad9f270643
dcad9f270643

Ahora, si el contenedor de la ventana Docker no funciona como se esperaba, podemos ejecutar el docker container attach para ver qué sucede dentro del contenedor.

$ docker container attach dcad9f270643

Producción :

2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> Server startup complete; 3 plugins started.
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0>  * rabbitmq_prometheus
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0>  * rabbitmq_web_dispatch
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0>  * rabbitmq_management_agent

Use Secure Shell (SSH) para acceder al shell de un contenedor Docker

Finalmente, también podemos usar el shell seguro, comúnmente abreviado como SSH, para ejecutar comandos dentro de un contenedor. Sin embargo, esta es la forma menos recomendada debido a la inflación que provoca en la imagen base y los problemas de configuración que podemos encontrar.

Además, este método plantea un problema de seguridad ya que necesitaremos gestionar las claves nosotros mismos. También debemos tener en cuenta que algunas imágenes pueden no admitir intrínsecamente este método y, por lo tanto, pueden requerir una configuración adicional.

Sin embargo, si necesitamos usar este método, debemos seguir estos pasos.

  • Primero debemos instalar y habilitar el servicio SSH.
  • Luego, debemos recuperar la dirección IP del contenedor.
  • Por último, hacemos SSH en el contenedor utilizando la dirección IP recuperada.
Autor: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn