Inicie Bash Terminal en New Docker Container

Isaac Tony 23 agosto 2022
  1. Utilice el shell interactivo de Bash
  2. Usa el comando docker exec
  3. Utilice el comando docker attach
Inicie Bash Terminal en New Docker Container

Los contenedores Docker son la unidad estándar para empaquetar todas las dependencias de nuestras aplicaciones, lo que nos permite ejecutarlas fácilmente en cualquier entorno. Los contenedores se han vuelto muy populares recientemente, y la mayoría de los desarrolladores ahora dependen en gran medida de los contenedores para administrar sus aplicaciones y dependencias.

Docker nos brinda múltiples formas de acceder a una instancia de shell iniciando un terminal bash dentro de un contenedor docker. Esto es particularmente útil cuando se ejecutan algunos comandos dentro del contenedor docker.

Además, esto también puede deberse a razones de depuración, o tal vez desee verificar si todo está configurado correctamente. Este artículo explora diferentes métodos que podemos usar para ejecutar contenedores y contenedores que no se están ejecutando.

Utilice el shell interactivo de Bash

Bash es un procesador de comandos común con los sistemas Linux que permite a los usuarios escribir comandos que provocan acciones. Si tuvo alguna interacción con los sistemas basados ​​en Unix o WSL, puede interactuar con varios comandos a través de bash.

Del mismo modo, también podemos acceder directamente a la terminal de Linux dentro de un contenedor docker y ejecutar comandos como lo haríamos con el bash normal de Linux. Una ventaja de este método es que podemos hacer esto con un contenedor que no se está ejecutando, a diferencia de otros comandos como el comando docker exec.

Como se muestra a continuación, usaremos la imagen oficial rabbitmq del registro de la ventana Docker para crear un contenedor Docker y acceder directamente al bash dentro del contenedor. Puede hacer esto con cualquier otro comando; quiere asegurarse de tener la imagen de antemano.

docker pull rabbitmq
docker images

Ahora que tenemos las imágenes, podemos crear el contenedor Docker de forma interactiva. Esto significa que podemos ejecutar comandos dentro del contenedor docker mientras aún se está ejecutando, como se muestra a continuación.

$ docker run -it rabbitmq bash

Producción :

root@f418a3286aae:/#

Como puede ver, ahora estamos dentro del contenedor docker y hemos logrado ejecutar con éxito bash dentro del nuevo contenedor. Ahora podemos ejecutar nuestros comandos como si estuviéramos trabajando con la terminal real.

Por ejemplo, podemos enumerar los archivos y directorios dentro de este contenedor, como se muestra a continuación.

root@f418a3286aae:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys  tmp  usr  var
root@f418a3286aae:/#

Usa el comando docker exec

Alternativamente, también podemos usar el comando docker exec para ejecutar bash dentro de un nuevo contenedor docker. Sin embargo, a diferencia del método anterior, este comando requiere que ya tengamos el contenedor ejecutándose; de lo contrario, el comando no funcionará.

Use el comando docker ps -a para confirmar que nuestro contenedor se está ejecutando. Si el contenedor que desea usar no se está ejecutando, es posible que desee iniciarlo con el comando docker start seguido de la identificación o el nombre del contenedor.

docker ps

Usaremos el comando docker exec junto con la etiqueta -it. El comando exec nos permite ejecutar un comando en el contenedor en ejecución, mientras que la etiqueta -it nos permite abrir el contenedor de forma interactiva.

Podemos ejecutar eso como se muestra a continuación.

$ docker exec -it f418a3286aae bash

Producción :

root@f418a3286aae:/# ls
bin  boot  dev  etc  home  isaac  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys tmp  tonyloi  usr  var

Ahora que hemos lanzado con éxito bash dentro de este contenedor docker, podemos ejecutar varios comandos desde dentro del contenedor. Alternativamente, podemos usar sh para contenedores que no tienen bash.

Este también es un comando que abrirá un indicador de shell básico donde podemos ejecutar nuestros comandos dentro del contenedor.

$ docker exec -it f418a3286aae sh

Producción :

# ls
bin  boot  dev  etc  home  isaac  isaactonyloi  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys  tmp  tonyloi  usr  var

Utilice el comando docker attach

También podemos lanzar bash dentro de un contenedor docker en ejecución usando el comando docker added. Esto nos permite adjuntar los flujos de error, salida y entrada estándar local a un contenedor en ejecución usando la ID del contenedor.

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

Podemos implementar esto usando el nombre o la identificación del contenedor como se muestra a continuación.

Código:

$ docker container attach f418a3286aae

Producción :

root@f418a3286aae:/# ls
bin  boot  dev  etc  home  isaac  isaactonyloi  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys  tmp  tonyloi  usr  var
root@f418a3286aae:/#
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