Cómo entrar a contenedores Docker de forma interactiva con -it y -exec

DUGLAS MORENODUGLAS MORENO 👁 24

¿Qué es entrar a un contenedor de forma interactiva?

En Docker, acceder a un contenedor de forma interactiva significa conectarse a su entorno de ejecución en tiempo real, como si estuvieras dentro de una terminal virtual. Esto es útil para inspeccionar archivos, ejecutar comandos o depurar problemas dentro del contenedor. Los parámetros -it son clave para lograr esto.

Objetivo del artículo: Explicar los comandos docker run -it y docker exec -it, con ejemplos prácticos en bash y su salida esperada.

Público objetivo: Usuarios-intermedios en Docker que quieren dominar la gestión de contenedores.

Lo que aprenderás:

  • Cuándo usar docker run -it para crear contenedores interactivos.
  • Cómo usar docker exec -it para acceder a contenedores en ejecución.
  • Ejemplos con bash y salidas reales.

1. Usar docker run -it para crear un contenedor interactivo

El comando docker run -it se usa para iniciar un contenedor con un shell interactivo. El parámetro -it actúa como un puente entre tu terminal y el contenedor:

  • -i: Entrada interactiva (tu teclado envía señales al contenedor).
  • -t: Asigna una pseudo-TTY, permitiendo la salida de texto formateada.

Ejemplo 1: Contenedor de bash

# Crear un contenedor con nombre 'mi_bash' y ejecutar un shell interactivo
docker run -it --name mi_bash bash

Salida esperada:

/ #  # Esto es un prompt de bash dentro del contenedor

Una vez que ejecutes este comando, Docker iniciará un contenedor con un shell bash listo para recibir comandos. Puedes probar operar ls, echo, o cualquier otro comando de terminal.

Ejemplo 2: Ejecutar un script dentro del contenedor

# En tu terminal exterior:
docker run -it --name mi_bash bash
# Dentro del contenedor:
echo "Hola desde Docker" && ls

Salida esperada:

Hola desde Docker
bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

Nota: Para salir del contenedor, presiona Ctrl+D.

2. Usar docker exec -it para acceder a contenedores en ejecución

Si el contenedor ya está corriendo, usa docker exec -it para entrar a él. Este método no crea un nuevo contenedor, sino que conecta directamente a uno existente.

Paso 1: Obtener el ID del contenedor

# Listar contenedores en ejecución
 docker ps

Salida esperada:

CONTAINER ID        IMAGE               COMMAND             CREATED          STATUS              PORTS               NAMES
5a3d7f1b9c2b        ubuntu              "bash"             5 minutes ago   Up 4 minutes                           mi_bash

Paso 2: Usar docker exec -it

# Conectarse al contenedor 'mi_bash'
docker exec -it 5a3d7f1b9c2b

Salida esperada:

/ #  # Ahora estás dentro del contenedor que ya existía

Ejemplo avanzado: Modificar archivos en el contenedor

# Instalar un paquete temporal (ejemplo en Ubuntu)
docker exec -it 5a3d7f1b9c2b apt update && apt install -y curl

Salida esperada:

Hit:1 http://archive.ubuntu.com/ubuntu focal InRelease
Get:2 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
... (salida de actualización)
curl: installed

Esto muestra cómo actualizar paquetes dentro de un contenedor en ejecución.

3. Buenas prácticas y errores comunes

Recomendaciones:

  1. Siempre tenés a mano el ID o nombre del contenedor al usar docker exec.
  2. Usá -it solo cuando necesites interacción. Si solo quieres ejecutar un comando único, preferí docker run sin -it.
  3. Verifica el estado del contenedor con docker ps antes de usar docker exec.
  4. Evita mixturas de comandos. docker run y docker exec tienen propósitos distintos.

Errores comunes:

  • No usar -it en docker exec: Si omites -it, la salida no será interactiva.
  • Entrar a un contenedor detenido: docker exec solo funciona en contenedores en ejecución.
  • Olvidar el nombre/ID del contenedor: Es fácil confundir IDs, especialmente en entornos con múltiples contenedores.

4. Conclusión

docker run -it y docker exec -it son herramientas esenciales para interactuar con contenedores. Usa docker run -it para crear entornos temporales y docker exec -it para explorar contenedores ya en marcha. Estos comandos, combinados con bash, te permiten:

  • Depurar aplicaciones en tiempo real.
  • Modificar configuraciones sin reiniciar.
  • Probar cambios rápidamente.

Próximos pasos: Aprendé a automatizar estas interacciones con scripts o a usar Docker Compose para gestionar múltiples contenedores.

Comentarios (0)

Sé el primero en comentar.

Dejá tu comentario