0.4Ciclo de vida: run, ps, stop, rm, logs
Lo esencial en 30 segundos
- run crea Y arranca (pull + create + start): -d para segundo plano, --rm para ensayos desechables autoeliminados.
- ps ve, logs lee, exec entra: ps los vivos (ps -a todos), logs -f sigue los registros, exec -it abre una shell dentro.
- stop detiene con cortesía, rm elimina la cáscara: se prefiere stop a kill, y se purgan los exited con prune.
Minicaso hilado — Idir hace vivir una demo limpia de extremo a extremo
Idir, devops junior en Argel, debe mostrar nginx a su equipo: en lugar de dejar fantasmas en -d, juega el ciclo completo. Lanza con docker run -d --name demo nginx:1.27, muestra con docker ps, lee con docker logs demo, entra con docker exec -it demo sh y luego sale con exit, detiene con docker stop demo, elimina con docker rm demo, y verifica con docker ps -a que todo ha desaparecido. Seis comandos, cero contenedores exited olvidados: el 80 % de su uso cotidiano está cubierto.
Caso autónomo de esta sección: reaparece en el curso, el esquema, el guion y el reto 48h de la sección 0.4.
1. Nacer: run = pull + create + start
docker run -d --name demo nginx:1.27 hace tres cosas: descargar la imagen si hace falta, crear el contenedor, arrancarlo en segundo plano (-d). Sin -d, la terminal queda vinculada; con --rm, el contenedor se autoelimina al detenerse (perfecto para ensayos). Idir siempre nombra (--name) para apuntar justo después.
2. Vivir: ver, seguir, entrar
docker ps lista los vivos, ps -a añade los muertos. docker logs -f demo sigue los registros, docker exec -it demo sh abre una shell dentro del contenedor vivo. Retén: logs para ver, exec para entrar. Idir primero lee los registros antes de entrar: la mayoría de los diagnósticos se detienen ahí.
3. Morir limpiamente: stop y luego rm
docker stop demo envía una detención cortés (SIGTERM y luego SIGKILL), docker rm demo elimina la cáscara. docker rm -f fuerza ambas cosas de una vez. Los contenedores detenidos no eliminados estorban: un docker container prune regular hace limpieza. Idir prefiere stop a kill para dejar que las apps terminen limpiamente.
🔎 Ejemplo concreto — 🔎 Ejemplo concreto — Una demo limpia de extremo a extremo
Idir encadena el ciclo completo sobre demo, y luego verifica que no queda nada.
docker run -d --name demo nginx:1.27
docker ps
docker logs demo
docker stop demo
docker rm demo
docker ps -a
Lectura: se ve el contenedor vivo, se leen sus registros, se detiene, se elimina, se verifica que ha desaparecido.
Lección: este ciclo en seis comandos es el 80 % de tu uso cotidiano.
Vocabulario de la sección
- run
- Crear + arrancar un contenedor desde una imagen.
Ejemplo sencillo: Idir escribe docker run -d --name demo nginx:1.27: pull + create + start.
Lo que no es: la simple lista de los contenedores.
Reflejo: siempre --name para apuntar justo después.
- ps
- Listar los contenedores (vivos, o todos con -a).
Ejemplo sencillo: Idir ve demo vivo con ps, y luego desaparecido con ps -a tras rm.
Lo que no es: la lista de las imágenes.
Reflejo: ¿perdido? ps -a también muestra los muertos.
- exec
- Ejecutar un comando en un contenedor vivo.
Ejemplo sencillo: Idir abre una shell con docker exec -it demo sh y luego exit.
Lo que no es: el arranque de un nuevo contenedor.
Reflejo: diagnóstico: logs primero, exec después.
- stop / rm
- Detener con cortesía / eliminar la cáscara.
Ejemplo sencillo: Idir detiene demo (SIGTERM) y luego elimina su cáscara con rm.
Lo que no es: la eliminación de la imagen (rmi).
Reflejo: stop antes de rm, nunca cerrar la terminal.
- --rm
- Eliminar automáticamente el contenedor al detenerse.
Ejemplo sencillo: Idir lo añade a todos sus ensayos desechables: cero fantasmas exited.
Lo que no es: el arranque separado en segundo plano (-d).
Reflejo: ensayo desechable → --rm sistemático.
En la práctica — En la práctica — Hacer vivir un contenedor
- Lanza un nginx nombrado con -d, como Idir (docker run -d --name demo nginx:1.27).
- Muéstralo (ps), lee sus registros.
- Entra dentro con exec -it … sh, y luego sal (exit).
- Detenlo, elimínalo, verifica con ps -a.
Guion paso a paso — el ciclo demo de Idir en 6 comandos (5 min)
1) Escribe docker run -d --name demo nginx:1.27: nacimiento en segundo plano. 2) Escribe docker ps y luego docker logs demo: el vivo y sus registros. 3) Escribe docker exec -it demo sh, mira, y luego escribe exit: entrar y salir. 4) Escribe docker stop demo y luego docker rm demo: detención cortés y luego eliminación. 5) Escribe docker ps -a: como Idir, verifica que demo ha desaparecido — si no, docker container prune para purgar los exited.
Para un simple ensayo desechable, añade --rm al run: ningún paso 4 que olvidar.
Modelo copiar-pegar — mi memorándum del ciclo de vida
docker run -d --name demo nginx:1.27 # naître (pull + create + start)
docker ps # voir les vivants (ps -a = tous)
docker logs demo # lire (logs -f = suivre)
docker exec -it demo sh # entrer (exit = sortir)
docker stop demo # arrêt poli (SIGTERM puis SIGKILL)
docker rm demo # supprimer la coquille
docker ps -a # vérifier la disparition
Ensayo desechable
Idir prueba una imagen desconocida con --rm: el contenedor se autoelimina al detenerse, ningún exited.
Depuración exprés
Servicio mudo: Idir lee docker logs demo ante todo, y luego entra con exec -it demo sh si hace falta.
Detención cortés
En producción, Idir prefiere stop (SIGTERM, fin limpio) a kill (muerte inmediata).
Limpieza general
Decenas de exited olvidados: Idir purga con docker container prune y empieza limpio.
✓ Buenas prácticas
- Nombra (--name) para apuntar justo después.
- Usa --rm para todos los ensayos desechables.
- Prefiere stop a kill: las apps terminan limpiamente.
✗ Errores frecuentes
- Dejar decenas de contenedores exited (prune olvidado).
- Confundir rm (contenedor) y rmi (imagen).
- Cerrar la terminal en lugar de detener (fantasmas en -d).
Puntos clave
- run crea Y arranca.
- ps ve, logs lee, exec entra.
- stop detiene, rm elimina.
- --rm y prune mantienen la máquina limpia.
Reto 48h — aplica mañana
Juega el ciclo demo de Idir sin hacer trampas: run -d nombrado, ps, logs, exec + exit, stop, rm — y luego ps -a para probar que no queda nada.
- Puedo jugar el ciclo run → ps → logs → exec → stop → rm sin ayuda.
- Sé leer vivos y muertos con ps y ps -a.
- Mi máquina queda limpia (--rm para los ensayos, prune contra los exited).
Preguntas frecuentes
¿Diferencia entre stop y kill?
stop envía SIGTERM (la app termina limpiamente) y luego SIGKILL tras un plazo; kill mata de inmediato. En producción se prefiere stop — el reflejo de Idir para las apps.
¿Adónde van los registros?
El daemon los captura (json-file por defecto). docker logs los relee; piensa en la rotación para los servicios duraderos.
Pruebas una imagen desechable. ¿Qué opción evita olvidar la limpieza?