Introducción
En el desarrollo de software moderno, los contenedores se han convertido en una forma habitual de empaquetar e implementar aplicaciones. Un contenedor no es una máquina virtual completa. Comparte el kernel del host, pero ejecuta la aplicación en un entorno de procesos aislado, con su propia vista del sistema de archivos y configuración de red.
En este laboratorio dará sus primeros pasos con Docker mediante la ejecución de una aplicación real: el servidor web Nginx. Esto resulta útil porque muchos contenedores no ejecutan comandos de una sola vez. Funcionan como servicios de larga duración, por lo que debe comprender su ciclo de vida.
Este proceso supone un cambio importante respecto al ejemplo hello-world. En lugar de trabajar con un contenedor que se inicia, muestra un mensaje y finaliza, ahora trabajará con un contenedor de servicio diseñado para permanecer activo mientras se ejecuta su proceso principal.
Aprenderá a:
- Iniciar un contenedor en segundo plano (modo separado).
- Consultar el estado de los contenedores en ejecución.
- Detener un contenedor cuando haya terminado de utilizarlo.
- Eliminar un contenedor para liberar recursos del sistema.
Al finalizar este laboratorio, comprenderá el ciclo de vida completo de un contenedor de Docker: crear, ejecutar, detener y eliminar.
Ejecute un servidor web en segundo plano
En este paso iniciará un servidor web Nginx.
Cuando ejecuta un comando en el terminal, normalmente este ocupa la pantalla hasta que finaliza. Sin embargo, para un servicio como un servidor web, necesita que se ejecute continuamente en segundo plano, de modo que pueda seguir utilizando el terminal para otras tareas. En Docker, esto se denomina «modo separado».
Usaremos la opción -d para ejecutar el contenedor en modo separado. También usaremos la opción --name para asignar al contenedor un nombre específico y fácil de recordar.
El modo separado no cambia lo que hace el contenedor. Cambia la forma en que el terminal está conectado a él. El servicio continúa ejecutándose, pero el prompt del shell vuelve inmediatamente.
Ejecute el siguiente comando para iniciar un contenedor de Nginx llamado my-nginx:
docker run --name my-nginx -d nginx
Desglose del comando:
docker run: comando para crear e iniciar un contenedor nuevo.--name my-nginx: asigna el nombre «my-nginx» al contenedor. Si omite esta opción, Docker asigna un nombre aleatorio comohappy_hopper.-d: ejecuta el contenedor en modo separado (en segundo plano).nginx: imagen que se utilizará. Docker la busca localmente y, si no la encuentra, la descarga de Docker Hub.
Salida:
Verá una cadena larga de caracteres impresa en el terminal. Este es el ID del contenedor. El hecho de que el prompt de comandos vuelva inmediatamente confirma que el contenedor se está ejecutando en segundo plano.
El ID del contenedor es el identificador interno de Docker, mientras que el nombre del contenedor es una etiqueta fácil de reconocer. En el trabajo diario, los nombres suelen ser más fáciles de utilizar que los ID largos.
Compruebe el estado del contenedor
Ahora que ha iniciado el contenedor, debe verificar que se esté ejecutando según lo previsto. El comando docker ps muestra todos los contenedores activos.
Ejecute el siguiente comando:
docker ps
Debería ver una salida similar a esta:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1b2c3d4e5f6 nginx "/docker-entrypoint.…" 10 seconds ago Up 10 seconds 80/tcp my-nginx
Interpretación de la salida:
- CONTAINER ID: ID único de este contenedor (una versión truncada de la cadena larga que vio anteriormente).
- IMAGE: imagen que se está ejecutando (
nginx). - STATUS:
Upindica que el contenedor se está ejecutando correctamente. - NAMES: nombre que asignamos (
my-nginx).
Si ve esta entrada, ¡el servidor web se está ejecutando correctamente en segundo plano!
La salida de docker ps es una de sus principales vistas operativas. Le indica qué contenedores están activos en ese momento, de qué imagen proceden y cuánto tiempo llevan ejecutándose.
Detenga el servicio
Cuando haya terminado de utilizar un servicio o necesite reconfigurarlo, debe detener el contenedor en ejecución.
El comando docker stop envía una señal al contenedor para que se cierre correctamente. Puede seleccionar el contenedor mediante su ID de contenedor o su nombre. Como le asignamos el nombre my-nginx, utilizaremos ese nombre.
La detención correcta es importante porque muchos servicios necesitan tiempo para cerrar archivos, liberar puertos o finalizar trabajos en curso. Detener un contenedor no consiste simplemente en «apagarlo»; se solicita a su proceso principal que finalice de forma limpia.
Ejecute el siguiente comando:
docker stop my-nginx
El terminal imprimirá my-nginx para confirmar que recibió el comando.
Verifique que se haya detenido:
Vuelva a ejecutar docker ps. La lista debería estar vacía (o my-nginx no debería aparecer).
Para confirmar que el contenedor todavía existe, pero está detenido, utilice la opción -a (todos):
docker ps -a
Ahora verá my-nginx en la lista con el estado Exited.
Limpie los recursos
Detener un contenedor no lo elimina. El contenedor permanece en el disco y conserva sus registros y configuración. Esto resulta útil si desea reiniciarlo más adelante con docker start.
Esta es otra distinción del ciclo de vida que conviene recordar: crear/ejecutar, detener y eliminar son operaciones independientes. Docker mantiene estos estados separados para que pueda inspeccionar o reiniciar los contenedores antes de eliminarlos.
Sin embargo, si ya ha terminado por completo de utilizar el contenedor, debe eliminarlo para mantener limpio el sistema. El comando docker rm elimina los contenedores detenidos.
Ejecute el siguiente comando para eliminar my-nginx:
docker rm my-nginx
El terminal imprimirá my-nginx para confirmar la eliminación.
Comprobación final:
Ejecute docker ps -a una última vez. Verá que el contenedor ha desaparecido por completo.
Nota: Por lo general, no puede eliminar un contenedor en ejecución con docker rm. Primero debe detenerlo, como hicimos anteriormente, o utilizar la opción -f (forzar). Sin embargo, se recomienda detenerlo correctamente.
Resumen
En este laboratorio administró correctamente el ciclo de vida completo de un contenedor de Docker. Aprendió a:
- Ejecutar un servicio en segundo plano mediante
docker run -d. - Comprobar el estado de los contenedores activos con
docker ps. - Detener correctamente un servicio mediante
docker stop. - Eliminar un contenedor detenido para liberar recursos mediante
docker rm.
Estos cuatro comandos son herramientas de uso diario para cualquier usuario de Docker. Ahora está preparado para explorar con más profundidad cómo interactuar con los contenedores en ejecución.



