Cómo entrar a contenedores Docker de forma interactiva con -it y -exec
¿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 -itpara crear contenedores interactivos. - Cómo usar
docker exec -itpara acceder a contenedores en ejecución. - Ejemplos con
bashy 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 bashSalida esperada:
/ # # Esto es un prompt de bash dentro del contenedorUna 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" && lsSalida esperada:
Hola desde Docker
bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr varNota: 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 psSalida esperada:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5a3d7f1b9c2b ubuntu "bash" 5 minutes ago Up 4 minutes mi_bashPaso 2: Usar docker exec -it
# Conectarse al contenedor 'mi_bash'
docker exec -it 5a3d7f1b9c2bSalida esperada:
/ # # Ahora estás dentro del contenedor que ya existíaEjemplo avanzado: Modificar archivos en el contenedor
# Instalar un paquete temporal (ejemplo en Ubuntu)
docker exec -it 5a3d7f1b9c2b apt update && apt install -y curlSalida 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: installedEsto muestra cómo actualizar paquetes dentro de un contenedor en ejecución.
3. Buenas prácticas y errores comunes
Recomendaciones:
- Siempre tenés a mano el ID o nombre del contenedor al usar
docker exec. - Usá
-itsolo cuando necesites interacción. Si solo quieres ejecutar un comando único, preferídocker runsin-it. - Verifica el estado del contenedor con
docker psantes de usardocker exec. - Evita mixturas de comandos.
docker runydocker exectienen propósitos distintos.
Errores comunes:
- No usar
-itendocker exec: Si omites-it, la salida no será interactiva. - Entrar a un contenedor detenido:
docker execsolo 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.
DUGLAS MORENO
Comentarios (0)
Sé el primero en comentar.