Curso Docker

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.


1. 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.


2. 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.


3. 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.


4. docker start <nombre_contenedor>: 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.


5. docker stop <nombre_contenedor>: 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.


6. docker restart <nombre_contenedor>: 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.


7. docker kill <nombre_contenedor>: 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.


8. docker rm <nombre_contenedor>: 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.


9. docker logs <nombre_contenedor>: 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.


10. docker exec -it <nombre_contenedor> <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.


11. docker attach <nombre_contenedor>: 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.


12. docker inspect <nombre_contenedor>: 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

  • docker run: Crea y ejecuta un contenedor.
  • docker ps: Lista los contenedores en ejecución.
  • docker ps -a: Lista todos los contenedores, incluyendo los detenidos.
  • docker start: Inicia un contenedor detenido.
  • docker stop: Detiene un contenedor en ejecución.
  • docker restart: Reinicia un contenedor.
  • docker kill: Termina un contenedor inmediatamente.
  • docker rm: Elimina un contenedor detenido.
  • docker logs: Muestra los registros (logs) del contenedor.
  • docker exec: Ejecuta un comando dentro de un contenedor.
  • docker attach: Conéctate a un contenedor en ejecución.
  • docker inspect: Obtén información detallada sobre un contenedor.

Estos comandos te permiten gestionar de manera eficiente los contenedores en Docker.

  • Loading...
  • Muestra los contenedores que están actualmente en ejecución.

    Loading...
  • Muestra los contenedores en ejecución y los que han sido detenidos.

    Loading...
  • Tienes un contenedor de nginx parado. Tu tarea es volver a arrancarlo.

    Loading...