Saltar a contenido

Comandos Esenciales de Docker

Esta es una guía de referencia rápida con los comandos más utilizados en el día a día para administrar tus entornos de Docker.

1. Gestión de Contenedores

Los contenedores son las instancias en ejecución de tus imágenes. Aquí tienes los comandos básicos para controlar su ciclo de vida:

Comando Descripción
docker run <imagen> Descarga (si no existe) y arranca un contenedor nuevo.
docker run -d -p 8080:80 --name mi_web nginx Inicia un contenedor en segundo plano (-d), mapea puertos (-p) y le asigna un nombre (--name).
docker ps Lista únicamente los contenedores que están activos actualmente.
docker ps -a Lista todos los contenedores del sistema (activos e inactivos).
docker stop <id_o_nombre> Detiene de forma segura un contenedor en ejecución.
docker start <id_o_nombre> Inicia un contenedor que estaba previamente detenido.
docker rm <id_o_nombre> Elimina un contenedor detenido del sistema.
docker rm -f $(docker ps -aq) Fuerza la eliminación de todos los contenedores del sistema.

2. Inspección y Depuración

Comandos cruciales para revisar logs, solucionar problemas o interactuar con el interior de una aplicación:

  • docker logs <id_o_nombre>: Muestra la salida estándar y de error del contenedor.
  • docker logs -f <id_o_nombre>: Sigue los logs en tiempo real (útil para depurar).
  • docker exec -it <id_o_nombre> bash: Abre una terminal interactiva (-it) dentro de un contenedor en ejecución (usa sh si no tiene bash).
  • docker inspect <id_o_nombre>: Devuelve toda la información detallada en formato JSON (redes, rutas, volúmenes).
  • docker stats: Muestra el consumo de CPU, memoria y red de tus contenedores en tiempo real.

3. Gestión de Imágenes

Las imágenes son las plantillas que sirven de molde. Con estos comandos puedes administrarlas:

Comando Descripción
docker images Lista todas las imágenes guardadas localmente en tu máquina.
docker pull <imagen> Descarga una imagen específica desde Docker Hub sin ejecutarla.
docker rmi <id_imagen> Elimina una imagen local (no debe tener contenedores asociados).
docker build -t mi_app:1.0 . Construye una imagen propia a partir del Dockerfile del directorio actual (.).

4. Persistencia y Almacenamiento (Volúmenes)

Los datos dentro de un contenedor se destruyen cuando este se elimina. Para persistir información utilizamos volúmenes:

  • docker volume ls: Lista todos los volúmenes locales creados.
  • docker volume create <nombre>: Crea un nuevo espacio de almacenamiento persistente administrado por Docker.
  • docker volume rm <nombre>: Elimina un volumen (debe estar desconectado de cualquier contenedor).
  • docker run -v mi_data:/data alpine: Monta el volumen mi_data en la ruta interna /data del contenedor.

5. Limpieza del Sistema (Pruning)

Docker suele acumular contenedores antiguos, imágenes intermedias y volúmenes huérfanos que consumen mucho espacio en disco.

  • docker system prune: Elimina de golpe todos los contenedores detenidos, redes en desuso e imágenes sin etiquetar.
  • docker system prune -a --volumes: Limpieza profunda. Borra todo lo anterior más las imágenes que no estén asociadas a ningún contenedor activo y todos los volúmenes huérfanos.

Orquestación con Docker Compose

Docker Compose es una herramienta que permite definir y ejecutar aplicaciones multi-contenedor. Utiliza un único archivo YAML (docker-compose.yml) para configurar todos los servicios, redes y volúmenes que tu aplicación necesita, permitiendo levantarlo todo con un solo comando.

1. Ciclo de Vida de la Aplicación

Estos comandos controlan todo el ecosistema de contenedores definido en tu archivo de configuración:

Comando Descripción
docker compose up Lee el archivo YAML, crea las redes/volúmenes y arranca todos los servicios.
docker compose up -d Levanta toda la infraestructura en segundo plano (modo detached).
docker compose up --build Fuerza la reconstrucción de las imágenes locales antes de iniciar los contenedores.
docker compose down Detiene y elimina los contenedores, redes y elementos creados por up.
docker compose down -v Detiene todo y además borra los volúmenes persistentes asociados.
docker compose stop Detiene los contenedores temporalmente sin eliminarlos.
docker compose start Reanuda los contenedores que fueron previamente detenidos con stop.

2. Gestión y Diagnóstico

Comandos esenciales para monitorizar y realizar el mantenimiento de los servicios agrupados:

  • docker compose ps: Muestra el estado actual, nombres y puertos de los contenedores gestionados por el archivo de Compose.
  • docker compose logs: Centraliza y muestra las salidas de terminal de todos los servicios simultáneamente.
  • docker compose logs -f <nombre_servicio>: Sigue en tiempo real los logs de un servicio específico (por ejemplo: docker compose logs -f db).
  • docker compose top: Muestra los procesos activos que se están ejecutando dentro de cada uno de los contenedores.

3. Ejecución de Comandos Internos

Cuando necesitas interactuar de forma directa con las herramientas internas de un contenedor específico de la pila:

Comando Descripción
docker compose exec <servicio> <comando> Ejecuta un comando en un contenedor que ya está activo (ej: docker compose exec web bash).
docker compose run <servicio> <comando> Levanta un contenedor nuevo y aislado para ejecutar un comando puntual y luego se detiene.

4. Ejemplo Práctico de Estructura (docker-compose.yml)

Para que tus comandos tengan efecto, deben ejecutarse en la misma carpeta donde resida tu archivo de configuración. Aquí tienes un diseño estándar para un entorno Web + Base de Datos:

version: '3.8'

services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - db

  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: mi_password_segura
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

💡 Equivalencias Rápidas: Docker vs. Docker Compose

Acción Con Docker Nativo Con Docker Compose
Arrancar entorno Crear red \(\rightarrow\) Crear volumen \(\rightarrow\) 2x docker run docker compose up -d
Ver estado docker ps (Muestra todo lo que hay en la máquina) docker compose ps (Solo tu proyecto)
Destruir todo docker rm -f c1 c2 \(\rightarrow\) docker network rm... docker compose down