MINI TUTORIAL DOCKER – DÍA 2
Imágenes y contenedores en la práctica: run, ps, stop, rm, logs, exec
1. Objetivo del día
Hoy no vas a aprender nada “nuevo raro”.
Solo vas a dominar bien lo básico:
- arrancar contenedores con
docker run - ver qué contenedores están en marcha (
docker ps) - parar, arrancar y borrar contenedores
- ver los logs de un contenedor
- entrar en un contenedor que está corriendo (
docker exec -it)
Al final del día tendrás control total del ciclo de vida básico de un contenedor.
2. Recordatorio rápido: imagen vs contenedor
Muy resumido:
- Imagen → plantilla (solo lectura), por ejemplo
alpine,nginx - Contenedor → instancia en ejecución de esa imagen
Comando clave:
docker run IMAGEN [COMANDO]
- Si no pones
COMANDO, usa el que trae la imagen por defecto - Si pones
COMANDO, se usa ese en su lugar
Ejemplo:
docker run alpine echo "Hola"
- Usa la imagen
alpine - Ejecuta el comando
echo "Hola"dentro del contenedor - Cuando termina
echo, el contenedor finaliza
3. Ver contenedores: docker ps y docker ps -a
Contenedores en ejecución:
docker ps
Columnas importantes:
- CONTAINER ID → identificador corto
- IMAGE → qué imagen usa
- STATUS → en marcha, detenido, etc.
- NAMES → nombre del contenedor (muy importante)
Todos los contenedores (incluidos los detenidos):
docker ps -a
Ahí verás contenedores de tipo:
Exited (0)→ contenedor que ya terminóUp X seconds→ contenedor en marcha
4. Ejecutar contenedores: corto vs largo
4.1. Contenedor “de un solo uso”
Ejemplo (similar a lo que vimos en el Día 1):
docker run --rm alpine echo "Hola desde Alpine"
¿Qué hace?
- descarga la imagen
alpinesi no la tienes - crea un contenedor temporal
- ejecuta
echo "Hola desde Alpine" - muestra el resultado
- gracias a
--rm, borra el contenedor al terminar
No queda nada colgando en docker ps -a.
4.2. Contenedor que se quede corriendo
Necesitamos un contenedor que no termine enseguida, para poder luego entrar dentro.
Ejemplo:
docker run -d --name alpine-sleep alpine sleep 3600
-d→ detached (en segundo plano)--name alpine-sleep→ nombre del contenedoralpine→ imagensleep 3600→ se queda “durmiendo” 3600 segundos (1 hora)
Comprueba:
docker ps
Deberías ver algo como:
CONTAINER ID IMAGE COMMAND STATUS NAMES
xxxxx alpine "sleep 3600" Up ... alpine-sleep
5. Parar, arrancar y borrar contenedores
5.1. Parar un contenedor
docker stop alpine-sleep
Ahora:
docker ps
Ya no aparece.
Pero sí lo verás en:
docker ps -a
con estado Exited.
5.2. Volver a arrancarlo
docker start alpine-sleep
docker ps
Vuelve a estar en marcha.
5.3. Borrarlo
Un contenedor debe estar parado para borrarlo:
docker stop alpine-sleep
docker rm alpine-sleep
Ahora ya no aparece ni en docker ps ni en docker ps -a.
👉 Resumen mental:
stop→ lo parastart→ lo arranca de nuevorm→ lo borra
6. Ver los logs de un contenedor: docker logs
Los contenedores imprimen cosas por su salida estándar, igual que un programa normal.
Ejemplo simple:
docker run --name hola-logs alpine echo "Hola desde los logs"
El contenedor termina, pero queda registrado.
Ver logs:
docker logs hola-logs
Verás:
Hola desde los logs
Esto es muy útil para:
- ver errores de aplicaciones
- revisar qué ha pasado en un contenedor que ya terminó
7. Entrar dentro de un contenedor en marcha: docker exec -it
Para “entrar” dentro de un contenedor que siga corriendo:
- Primero creamos uno que dure un rato:
docker run -d --name alpine-demo alpine sleep 3600
- Ahora entramos dentro con una shell:
docker exec -it alpine-demo sh
exec→ ejecuta un comando dentro de un contenedor ya en marcha-it→ modo interactivo + terminalsh→ shell de Alpine
Dentro puedes hacer:
ls
pwd
uname -a
cat /etc/os-release
exit
Al hacer exit, sales del contenedor, pero el contenedor sigue en ejecución (sigue haciendo sleep 3600).
Puedes comprobarlo:
docker ps
Cuando quieras, lo paras y lo borras:
docker stop alpine-demo
docker rm alpine-demo
8. Práctica guiada del Día 2 (30–40 min)
Haz estos pasos en orden:
1️⃣ Ver contenedores:
docker ps
docker ps -a
2️⃣ Crear y ejecutar un contenedor corto:
docker run --rm alpine echo "Hola desde un contenedor efímero"
3️⃣ Crear un contenedor de larga duración:
docker run -d --name alpine-sleep alpine sleep 3600
4️⃣ Ver que está corriendo:
docker ps
5️⃣ Entrar dentro con exec:
docker exec -it alpine-sleep sh
- Dentro: ejecuta
ls,pwd,uname -a,exit
6️⃣ Parar y arrancar de nuevo:
docker stop alpine-sleep
docker start alpine-sleep
docker ps
7️⃣ Ver logs de un contenedor:
docker run --name hola-logs alpine echo "Hola desde los logs"
docker logs hola-logs
8️⃣ Limpiar contenedores de prueba:
docker stop alpine-sleep
docker rm alpine-sleep
docker rm hola-logs
9. Checklist del Día 2
- Sé ver contenedores en ejecución (
docker ps) - Sé ver contenedores terminados (
docker ps -a) - Entiendo la diferencia entre contenedor corto y largo
- Sé usar
docker run --rmpara contenedores efímeros - Sé crear contenedores con nombre (
--name) - Sé parar, arrancar y borrar contenedores (
stop,start,rm) - Sé ver los logs de un contenedor (
docker logs) - Sé entrar en un contenedor en marcha con
docker exec -it
Si está todo marcado → Día 2 de Docker completado ✔
Día 3 – Publicar puertos y levantar tu primer Nginx en un contenedor (
-p host:contenedor)
