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, evitar
latest
- 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