Contenedores en segundo plano con Docker

contenedores-en-segundo-plano
contenedores-en-segundo-plano

Los contenedores en segundo plano permiten ejecutar servicios Docker sin dejar tu terminal bloqueada. El contenedor sigue activo, pero tú recuperas el prompt para consultar logs, abrir otra sesión, detenerlo o seguir trabajando.

La opción clave es -d, también llamada modo detached. Es muy útil para servicios como Nginx, bases de datos, APIs o laboratorios que deben quedar funcionando mientras revisas el estado desde otros comandos.

👉 Y recuerda, si quieres aprender más de Linux, visita el curso de Linux gratis.

🐳 Si quieres aprender más de Docker, visita el curso de Docker gratis.

Contenedores en segundo plano

Cuando ejecutas un contenedor en primer plano, ves su salida directamente y tu terminal queda conectada al proceso. Cuando lo ejecutas en segundo plano, Docker devuelve el control a la terminal y el proceso queda administrado por el daemon.

ModoQué pasa con la terminalCuándo usarlo
Primer planoLa salida queda conectada a tu terminal.Pruebas rápidas o comandos que terminan pronto.
Segundo planoLa terminal vuelve al prompt y el contenedor sigue corriendo.Servicios, laboratorios persistentes y pruebas web.
InteractivoPuedes escribir dentro del proceso o shell.Explorar o depurar manualmente.
ExecAbres un proceso adicional en un contenedor existente.Entrar sin reiniciar ni recrear.

La idea principal es sencilla: -d no hace que la aplicación sea mágica ni persistente por sí sola; solo desacopla tu terminal del proceso principal del contenedor.

Antes de empezar

Usa una máquina de laboratorio y asegúrate de que el puerto 8080 no está ocupado. Los ejemplos crean contenedores con nombre claro para que puedas limpiarlos al final sin tocar otros servicios.

  • Necesitas Docker instalado y permisos para ejecutar contenedores.
  • Los ejemplos usan la imagen oficial nginx:alpine.
  • No uses nombres de contenedores reales de producción para practicar.
  • Si un comando de limpieza incluye borrado forzado, revisa dos veces el nombre antes de ejecutarlo.

Ejecutar un servicio con -d

Este ejemplo arranca Nginx en segundo plano, publica el puerto 8080 del host y después consulta estado y logs. Es un caso típico para entender el modo detached.

docker run -d --name web-segundo-plano -p 8080:80 nginx:alpine
docker ps --filter name=web-segundo-plano
docker logs --tail 20 web-segundo-plano

Qué debes comprobar

  • docker run -d devuelve un identificador y libera la terminal.
  • docker ps muestra el contenedor como running si el proceso sigue activo.
  • docker logs permite leer la salida aunque no estés conectado al proceso.
  • El mapeo de puertos hace que puedas probar el servicio desde el host si el puerto está libre.

Si el contenedor aparece y desaparece, no es un problema del modo detached: normalmente el proceso principal terminó o falló. En ese caso revisa logs e inspección antes de recrearlo.

Logs, exec y attach

Una vez que el contenedor está en segundo plano, hay tres acciones que suelen confundirse: leer logs, abrir otro proceso con exec o reconectarte al proceso principal con attach. No hacen lo mismo.

ComandoQué haceRiesgo típico
docker logsMuestra la salida generada por el proceso.No permite ejecutar comandos dentro.
docker execEjecuta un proceso nuevo dentro del contenedor.Depende de que exista una shell o el binario pedido.
docker attachConecta tu terminal al proceso principal.Salir mal puede enviar señales y detener el contenedor.

Para entrar a revisar archivos o procesos, normalmente es más seguro usar exec que attach. Attach sirve cuando quieres reconectarte al proceso principal y entiendes cómo salir sin cortarlo.

docker exec -it web-segundo-plano sh
pwd
exit
docker attach web-segundo-plano
# Para salir sin detenerlo: Ctrl+p y después Ctrl+q

Detener y limpiar

Cuando termines el laboratorio, detén el contenedor de forma ordenada y después elimínalo. Así no dejas servicios escuchando en puertos ni contenedores detenidos acumulados.

docker stop web-segundo-plano
docker rm web-segundo-plano

docker stop pide al proceso que termine con una señal de parada y espera un tiempo de gracia. docker rm elimina el contenedor detenido. Si usas volúmenes nombrados, no asumas que se borran automáticamente.

Reinicio automático

Para servicios de laboratorio que quieres mantener activos, Docker permite políticas de reinicio. Úsalas con criterio: reiniciar automáticamente puede ayudar, pero también puede ocultar una aplicación que falla en bucle.

docker run -d --name web-reinicio --restart unless-stopped nginx:alpine
docker inspect web-reinicio --format '{{.State.Status}} {{.HostConfig.RestartPolicy.Name}}'
docker rm -f web-reinicio
  • no: no reinicia automáticamente.
  • on-failure: reinicia si el proceso termina con error.
  • unless-stopped: reinicia salvo que lo pares manualmente.
  • always: intenta mantenerlo activo incluso tras reinicios del daemon.

Errores comunes

  • Usar -d con un comando que termina al instante y pensar que Docker falló.
  • Confundir docker attach con docker exec.
  • No mirar logs cuando el contenedor se detiene solo.
  • Publicar un puerto ya ocupado y no revisar el mensaje de error.
  • Dejar contenedores de laboratorio corriendo durante días sin necesidad.
  • Usar reinicio automático para tapar errores de configuración.
  • Ejecutar borrado forzado sobre un contenedor que sí presta un servicio real.

Si algo no funciona, el orden seguro es: mirar estado, leer logs, inspeccionar configuración y solo después decidir si reiniciar, recrear o borrar. Esa secuencia evita perder pistas importantes.

Lecciones relacionadas del curso Docker

Documentación oficial y recursos

Los contenedores en segundo plano son la forma habitual de ejecutar servicios con Docker durante desarrollo y pruebas. La clave es no perder visibilidad: aunque la terminal quede libre, el contenedor debe seguir siendo observable con logs, estado e inspección.

Si recuerdas una regla, que sea esta: detached no significa olvidado. Arranca el servicio, verifica que sigue running, revisa sus logs y límpialo cuando ya no lo necesites.

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *