Ir al contenido

Comandos de Docker

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

Comandos Básicos

ComandoDescripción
docker --versionMostrar versión de Docker
docker infoMostrar información del sistema
docker helpMostrar ayuda para comandos de Docker
docker imagesListar todas las imágenes
docker psListar contenedores en ejecución
docker ps -aListar 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

ComandoDescripció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> bashEjecutar 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 statsMostrar uso de recursos de contenedor
docker top <container>Mostrar procesos en ejecución en el contenedor

Gestión de Imágenes

ComandoDescripció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.tarGuardar imagen en archivo tar
docker load < file.tarCargar imagen desde archivo tar
docker history <image>Mostrar historial de imágenes
docker search <term>Buscar imágenes en registry

Docker Compose

ComandoDescripción
docker-compose upIniciar servicios definidos en el archivo compose
docker-compose up -dIniciar servicios en modo separado
docker-compose downDetener y eliminar contenedores
docker-compose buildConstruir o reconstruir servicios
docker-compose logsVer logs de todos los servicios
docker-compose psListar contenedores
docker-compose exec <service> bashEjecutar comando en servicio
docker-compose pullExtraer últimas imágenes
docker-compose restartReiniciar servicios

Gestión de Redes

ComandoDescripción
docker network lsListar 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

CommandDescription
docker volume lsListar 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 pruneEliminar 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