Saltar a contenido

Comandos de Docker

Comandos y flujos de trabajo completos de Docker para contenerización en todas las plataformas.

Comandos Básicos

Comando Descripción
docker --version Mostrar versión de Docker
docker info Mostrar información del sistema
docker help Mostrar ayuda para comandos de Docker
docker images Listar todas las imágenes
docker ps Listar contenedores en ejecución
docker ps -a Listar todos los contenedores (en ejecución y detenidos)
docker pull <image> Extraer una imagen del registro
docker run <image> Ejecutar un contenedor desde una imagen
docker stop <container> Detener un contenedor en ejecución
docker start <container> Iniciar un contenedor detenido
docker restart <container> Reiniciar un contenedor
docker rm <container> Eliminar un contenedor
docker rmi <image> Eliminar una imagen
## Gestión de Contenedores
Comando Descripción
docker run -d <image> Ejecutar contenedor en modo separado
docker run -it <image> Ejecutar contenedor de forma interactiva
docker run -p 8080:80 <image> Mapear el puerto 8080 al puerto del contenedor 80
docker run -v /host:/container <image> Montar volumen
docker run --name <name> <image> Ejecutar contenedor con nombre personalizado
docker exec -it <container> bash Ejecutar bash en contenedor en ejecución
docker logs <container> Ver registros de contenedor
docker logs -f <container> Seguir registros de contenedores
docker inspect <container> Inspeccionar detalles del contenedor
docker stats Mostrar uso de recursos de contenedor
docker top <container> Mostrar procesos en ejecución en el contenedor
## Gestión de Imágenes
Comando Descripción
docker build -t <name> . Construir imagen desde Dockerfile
docker build -t <name>:<tag> . Construir imagen con etiqueta
docker tag <image> <new-name> Etiquetar una imagen
docker push <image> Enviar imagen al registro
docker save <image> > file.tar Guardar imagen en archivo tar
docker load < file.tar Cargar imagen desde archivo tar
docker history <image> Mostrar historial de imágenes
docker search <term> Buscar imágenes en registry
## Docker Compose
Comando Descripción
docker-compose up Iniciar servicios definidos en el archivo compose
docker-compose up -d Iniciar servicios en modo separado
docker-compose down Detener y eliminar contenedores
docker-compose build Construir o reconstruir servicios
docker-compose logs Ver logs de todos los servicios
docker-compose ps Listar contenedores
docker-compose exec <service> bash Ejecutar comando en servicio
docker-compose pull Extraer últimas imágenes
docker-compose restart Reiniciar servicios
## Gestión de Redes
Comando Descripción
docker network ls Listar redes
docker network create <name> Crear una red
docker network rm <name> Eliminar una red
docker network inspect <name> Inspeccionar detalles de red
docker run --network <name> <image> Ejecutar contenedor en red específica
## Gestión de Volúmenes
Command Description
docker volume ls Listar volúmenes
docker volume create <name> Crear un volumen
docker volume rm <name> Eliminar un volumen
docker volume inspect <name> Inspeccionar detalles de volumen
docker volume prune Eliminar volúmenes no utilizados
## Flujos de Trabajo Comunes

Flujo de Trabajo de Desarrollo

# Build and run application
docker build -t myapp .
docker run -p 3000:3000 myapp

# Development with volume mounting
docker run -p 3000:3000 -v $(pwd):/app myapp

# Using Docker Compose for development
docker-compose up --build

Despliegue en Producción

# Build production image
docker build -t myapp:prod .

# Tag for registry
docker tag myapp:prod registry.com/myapp:latest

# Push to registry
docker push registry.com/myapp:latest

# Deploy on production server
docker pull registry.com/myapp:latest
docker run -d -p 80:3000 --name myapp-prod registry.com/myapp:latest

Depuración de Contenedores

# Check container logs
docker logs -f container-name

# Execute shell in running container
docker exec -it container-name bash

# Inspect container configuration
docker inspect container-name

# Check resource usage
docker stats container-name

Mejores Prácticas

Optimización de Dockerfile

  • Usar compilaciones multi-etapa para reducir el tamaño de la imagen
  • Aprovechar la caché de compilación ordenando las instrucciones correctamente
  • Usar etiquetas de imagen base específicas, evitarlatest
  • Minimizar el número de capas
  • Usar.dockerignorepara excluir archivos innecesarios

Seguridad

  • Ejecutar contenedores como usuario sin root
  • Usar imágenes base oficiales cuando sea posible
  • Actualizar regularmente las imágenes base
  • Escanear imágenes en busca de vulnerabilidades
  • Limitar recursos de contenedores (CPU, memoria)

Rendimiento

  • Usar imágenes base apropiadas (alpine para menor tamaño)
  • Optimizar el almacenamiento en caché de capas
  • Usar comprobaciones de salud para contenedores
  • Monitorear el uso de recursos de contenedores
  • Usar volúmenes para datos persistentes

Despliegue en Producción

  • Usar herramientas de orquestación (Docker Swarm, Kubernetes)
  • Implementar registro y monitoreo adecuados
  • Usar gestión de secretos para datos sensibles
  • Configurar copias de seguridad automatizadas
  • Implementar actualizaciones graduales