0.4 · Ciclo de vida: run, ps, stop, rm, logs

Fundamentos

0.4Ciclo de vida: run, ps, stop, rm, logs

Objetivo: Dominar el ciclo de vida completo de un contenedor en el día a día.
Tiempo estimado: 12 min · lectura autónoma · Si solo tienes 5 min: lee «Lo esencial en 30s» + el esquema.

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.

Error frecuente de interpretación: «Cierro la terminal para detener, dejo que los exited se acumulen, y rm también elimina la imagen». No, triple error. Cerrar la terminal deja un fantasma en -d: se detiene con stop, se elimina con rm, se verifica con ps -a. Las decenas de contenedores exited saturan el disco: --rm para los ensayos, prune regular si no. Y rm apunta al contenedor, no a la imagen (rmi): confundir ambos borra el objeto equivocado.
Ciclo de vida Crear y arrancar, observar, detener y luego eliminar: el ciclo completo. run (crear+arrancar) Nacercon -d y --nameps / logs / exec Ver,leer, entrarstop y luego rm Morirlimpiamente
Crear y arrancar, observar, detener y luego eliminar: el ciclo completo.
Versión en texto del esquema (SEO / lectores de pantalla / traducción): 1) Idir, devops junior en Argel, hace nacer su contenedor: docker run -d --name demo nginx:1.27 descarga la imagen si hace falta, crea y luego arranca en segundo plano — con --rm para los ensayos desechables que se autoeliminan. 2) Lo hace vivir: 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 — logs para ver, exec para entrar. 3) Lo hace morir limpiamente: docker stop demo (detención cortés SIGTERM y luego SIGKILL) y luego docker rm demo (eliminación de la cáscara), rm -f para forzar, y docker container prune contra la acumulación de exited. Lección: este ciclo en seis comandos cubre el 80 % del día a día.

🔎 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

  1. Lanza un nginx nombrado con -d, como Idir (docker run -d --name demo nginx:1.27).
  2. Muéstralo (ps), lee sus registros.
  3. Entra dentro con exec -it … sh, y luego sal (exit).
  4. Detenlo, elimínalo, verifica con ps -a.
El ciclo run → ps → logs → stop → rm ya no tiene secretos.

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.

Lista de salida de la sección
  • 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).
Autoevaluación 1-5: ¿encadeno los 6 comandos sin mirar el memorándum?Autoevaluación 1-5: ¿he verificado la desaparición con ps -a (cero fantasmas)?

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.

Comprueba tu comprensión

Pruebas una imagen desechable. ¿Qué opción evita olvidar la limpieza?

Recursos adicionales (opcional, para ir más allá)

Examen del nivel 0Preguntas inéditas y más difíciles para validar tus conocimientos