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 delDockerfileen 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.
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 endocker-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.