Docker: guía de mejores prácticas y comandos más usados

¿Conoces esos comandos Docker que buscas todo el tiempo porque nunca los memorizaste? Reuní los principales en una guía rápida, agrupados por categoría: imágenes, containers, volúmenes, redes, logs y Docker Compose. Incluye también buenas prácticas en producción: imágenes livianas, usuario no-root, secrets y mantenimiento.

Principales comandos de Docker – agrupados por categoría para facilitar la consulta en el día a día.

1. Gestión de imágenes

  • docker pull <imagen> – descarga una imagen de Docker Hub (o registry).
  • docker images – lista imágenes locales.
  • docker rmi <imagen> – elimina una imagen.
  • docker build -t <nombre>:<tag> . – crea una imagen a partir del Dockerfile en el directorio actual.
  • docker tag <imagen> <repo>:<tag> – renombra/etiqueta una imagen.
  • docker push <repo>:<tag> – envía la imagen al registry.

2. Containers (ejecución)

docker run <imagen> – crea y ejecuta un container. Principales opciones:

Flag Qué hace
-d Ejecuta en background (detached)
-p 8080:80 Mapea puerto host:container
--name miapp Define el nombre del container
-v /host:/container Monta un volumen
  • docker ps – lista containers en ejecución.
  • docker ps -a – lista todos los containers (activos y parados).
  • docker stop <id|nombre> – detiene un container.
  • docker start <id|nombre> – inicia un container detenido.
  • docker restart <id|nombre> – reinicia un container.
  • docker rm <id|nombre> – elimina un container.

3. Logs, shell e inspección

  • docker logs <id|nombre> – muestra logs del container.
  • docker logs -f <id|nombre> – sigue logs en tiempo real (tail -f).
  • docker exec -it <id|nombre> sh – abre shell interactivo dentro del container.
  • docker inspect <id|nombre> – muestra detalles completos en JSON.
  • docker stats – monitorea uso de CPU y memoria en tiempo real.

4. Volúmenes y datos

  • docker volume ls – lista volúmenes.
  • docker volume create <nombre> – crea un volumen.
  • docker volume rm <nombre> – elimina un volumen.
  • docker system df – muestra uso de disco (imágenes, containers, volúmenes).

5. Redes

  • docker network ls – lista redes.
  • docker network create <nombre> – crea una red.
  • docker network inspect <nombre> – muestra detalles de la red.
  • docker network connect <red> <container> – conecta container a la red.
  • docker network disconnect <red> <container> – desconecta container de la red.

6. Limpieza (housekeeping)

  • docker system prune – elimina containers detenidos, redes e imágenes no usados.
  • docker system prune -a – igual, incluyendo todas las imágenes no utilizadas.
  • docker volume prune – elimina volúmenes no usados.
Atención: docker system prune -a elimina imágenes que no están vinculadas a ningún container activo. Use con cuidado en ambientes compartidos.

7. Docker Compose (multi-containers)

  • docker compose up -d – levanta los containers definidos en docker-compose.yml.
  • docker compose down – detiene y elimina los containers del stack.
  • docker compose logs -f – sigue logs de todos los servicios.
  • docker compose ps – lista containers del proyecto.
  • docker compose exec <servicio> sh – abre shell dentro de un servicio.

8. Buenas prácticas en producción

Docker se convirtió en estándar para empaquetar y ejecutar aplicaciones. En producción, sin embargo, imágenes mal configuradas y containers corriendo como root pueden ampliar la superficie de ataque y dificultar auditorías.

Imágenes más pequeñas y en capas

Use imágenes base Alpine o distroless siempre que sea posible y adopte multi-stage builds para compilar en una etapa y copiar solo el binario a la etapa final. Menos paquetes = menos CVEs y menor tamaño. Fije el tag de la imagen base (ej.: node:20-alpine) para evitar sorpresas en rebuilds.

Ejecutar como no-root

Cree un usuario dedicado en el Dockerfile y utilice la instrucción USER antes del CMD. En Kubernetes o Docker Compose, evite el modo privileged y limite recursos de CPU y memoria. Monitoree con herramientas de conformidad como Trivy o Docker Scout para identificar vulnerabilidades conocidas.

Secrets y configuración

Nunca coloque contraseñas o claves en variables de ambiente en texto plano en docker-compose.yml. Use Docker secrets, archivos montados como read-only o un orquestador (Kubernetes Secrets, HashiCorp Vault). Rote credenciales regularmente y mantenga las imágenes base actualizadas.

Preguntas Frecuentes

Los más utilizados son: docker run (crear contenedor), docker ps (listar contenedores), docker logs (ver logs), docker exec (ejecutar comando), docker compose up (levantar stack) y docker build (construir imagen).

Use docker logs <contenedor> para ver los logs. Agregue -f para seguir en tiempo real y --tail 100 para ver las últimas 100 líneas.

docker run crea un único contenedor. docker compose gestiona múltiples contenedores definidos en un archivo YAML, facilitando la orquestación de aplicaciones con varios servicios.

Use imágenes ligeras (Alpine/distroless), ejecute como usuario no root, gestione los secretos con Docker Secrets o variables de entorno, y mantenga las imágenes actualizadas.

?Necesitas ayuda?