Gestión contenedores
1. Gestión de Contenedores en Docker #
Los contenedores en Docker son instancias de imágenes que se ejecutan de manera independiente. A continuación, te explico los comandos más comunes para gestionar contenedores de forma clara y con ejemplos.
docker run <imagen>: Crear y ejecutar un nuevo contenedor #
Este comando se utiliza para crear un contenedor y ejecutarlo. Docker descargará la imagen si no está disponible localmente.
Ejemplo:
1docker run nginx
Esto ejecuta un nuevo contenedor de nginx. Si es la primera vez que usas esa imagen, Docker la descargará de Docker Hub y luego la ejecutará.
Puedes agregar opciones, por ejemplo, para abrir puertos o ejecutar en segundo plano:
1docker run -d -p 8080:80 nginx
Esto ejecutará nginx en segundo plano (-d) y mapeará el puerto 80 del contenedor al puerto 8080 de tu máquina.
docker ps: Listar contenedores en ejecución #
Este comando muestra solo los contenedores que están actualmente en ejecución.
Ejemplo:
1docker ps
Salida esperada:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1b2c3d4e5f6 nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:8080->80/tcp great_nginx
Aquí puedes ver el ID del contenedor, la imagen que está usando, su estado, y el puerto mapeado.
docker ps -a: Listar todos los contenedores (incluyendo los detenidos) #
Este comando lista tanto los contenedores en ejecución como los que han sido detenidos.
Ejemplo:
1docker ps -a
Salida esperada:
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
a1b2c3d4e5f6 nginx "nginx -g 'daemon of…" 2 hours ago Exited (0) 5 minutes ago old_nginx
Aquí ves que el contenedor old_nginx fue detenido hace 5 minutos.
docker start <nombrecontenedor>: Iniciar un contenedor detenido #
Este comando permite iniciar un contenedor que ya ha sido creado pero que está detenido.
Ejemplo:
1docker start old_nginx
Esto iniciará el contenedor llamado old_nginx, que se muestra en la lista de docker ps -a.
docker stop <nombrecontenedor>: Detener un contenedor en ejecución #
Este comando detiene de manera controlada un contenedor en ejecución.
Ejemplo:
1docker stop great_nginx
Esto detendrá el contenedor great_nginx que estaba corriendo. Docker le da tiempo al contenedor para terminar las tareas antes de detenerlo.
docker restart <nombrecontenedor>: Reiniciar un contenedor #
Este comando detiene y luego inicia de nuevo el contenedor.
Ejemplo:
1docker restart great_nginx
Esto reinicia el contenedor great_nginx. Puede ser útil si quieres refrescar la ejecución sin eliminar el contenedor.
docker kill <nombrecontenedor>: Terminar un contenedor inmediatamente #
Este comando detiene inmediatamente el contenedor, sin darle tiempo para finalizar tareas.
Ejemplo:
1docker kill great_nginx
Esto forzará el contenedor a detenerse de inmediato.
docker rm <nombrecontenedor>: Eliminar un contenedor detenido #
Este comando elimina completamente un contenedor que ya ha sido detenido.
Ejemplo:
1docker rm old_nginx
Esto eliminará el contenedor old_nginx. Si está en ejecución, primero tendrás que detenerlo con docker stop o usar docker rm -f para forzar su eliminación.
docker logs <nombrecontenedor>: Ver los logs de un contenedor #
Este comando muestra los registros (logs) generados por el contenedor en ejecución o detenido.
Ejemplo:
1docker logs great_nginx
Verás la salida del contenedor great_nginx, como los accesos al servidor o mensajes de error.
docker exec -it <nombrecontenedor> <comando>: Ejecutar un comando dentro de un contenedor en ejecución #
Permite ejecutar comandos dentro de un contenedor que ya está corriendo. La opción -it te da acceso interactivo.
Ejemplo:
1docker exec -it great_nginx /bin/bash
Esto te da una terminal interactiva dentro del contenedor great_nginx, donde puedes ejecutar comandos como si estuvieras dentro de la máquina.
docker attach <nombrecontenedor>: Conectarse a un contenedor en ejecución #
Este comando te conecta a la salida estándar de un contenedor en ejecución. Es como ver en tiempo real lo que sucede dentro del contenedor.
Ejemplo:
1docker attach great_nginx
Esto te permitirá ver lo que está ocurriendo en great_nginx, como si estuvieras conectado directamente a su consola.
docker inspect <nombrecontenedor>: Obtener información detallada sobre un contenedor #
Muestra información detallada sobre el contenedor, como su configuración, red, volúmenes, etc.
Ejemplo:
1docker inspect great_nginx
Este comando devolverá una gran cantidad de información en formato JSON, incluyendo configuraciones de red, volúmenes, puertos, etc.
Resumen del tema
Conceptos clave #
- Ciclo de Vida del Contenedor:
docker run -d -p 8080:80 --name web nginx: crea y lanza en background (-d), mapeando puertos host:contenedor.docker start / stop / restart / kill: control de ejecución y parada limpia (SIGTERM) o inmediata (SIGKILL).docker rm -f: elimina contenedores.
- Inspección y Diagnóstico:
docker ps/docker ps -a: lista contenedores activos o todo el historial.docker logs -f <contenedor>: monitoriza la salida de logs en vivo.docker inspect <contenedor>: metadatos completos en formato JSON (IPs, montajes, variables).
- Interacción:
docker exec -it <contenedor> bash: abre una sesión interactiva dentro de un contenedor en ejecución.
Qué debes recordar #
Usa docker run -d -p para levantar servicios en segundo plano y docker exec -it <contenedor> sh para acceder a su consola y depurar en caliente.