Entrar en el caparazón de un contenedor Docker
-
Use
docker exec
para ingresar al shell de un contenedor Docker -
Utiliza
docker container attach
para entrar en el shell de un contenedor Docker - Use Secure Shell (SSH) para acceder al shell 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.
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