el comando tiene flag -it (i y t) i de interactive (para que el teclado sea input para el contenedor) y t de tty o terminal
docker exec -it
se usan en conjunto -it (terminal + innput por tecclado)
y se indica al final si uso sh o bash
- sh: salió primero, es mas básico y liviano (muestra solo #)
- bash: evolución de sh (muestra todo, donde estás parado y con que usuario)
un ejemplo con docker compose (archivo bash.yml):
version: '3.8'
services:
mi_app:
image: python:3.11-slim
container_name: contenedor_con_bash
working_dir: /app
# Estas dos líneas mantienen el contenedor vivo en segundo plano
stdin_open: true
tty: true
volumes:
- .:/app
ports:
- "8000:8000"
lo que tiene ese docker-compose es que tiene un comando que se queda escuchando en el contenedor docker, sino se ejecuta y termina el contenedor en milisegundos
osea:
stdin_open: true
tty: true
levantar con docker compose, comando:
docker compose -f bash.yml up -d
comando:
docker exec -it contenedor_con_bash bash
osea:
docker exec -it CONTENEDOR_NOMBRE bash
eso abre una tty/shell bash en tu contenedor y la muestra en tiempo real
el comando con -it muestra /app creada con WORKDIR o working_dir