Tutorial Completo: Principales Comandos de Docker
🐳 Introducción a Docker
Docker es una plataforma que permite crear, desplegar y ejecutar aplicaciones en contenedores. Los contenedores permiten empaquetar una aplicación con todas sus dependencias, garantizando que funcione de manera uniforme en cualquier entorno.
📋 Comandos Esenciales para Gestionar Contenedores
Listar contenedores
# Listar contenedores en ejecución
docker ps
# Listar todos los contenedores (en ejecución y detenidos)
docker ps -a
# Listar con formato personalizado
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"Gestionar el ciclo de vida de contenedores
# Detener un contenedor
docker stop mi-servidor-web
# Iniciar un contenedor detenido
docker start mi-servidor-web
# Reiniciar un contenedor
docker restart mi-servidor-web
# Pausar un contenedor
docker pause mi-servidor-web
# Reanudar un contenedor pausado
docker unpause mi-servidor-webEliminar contenedores e imágenes
# Eliminar un contenedor
docker rm mi-servidor-web
# Eliminar un contenedor en ejecución (forzar)
docker rm -f mi-servidor-web
# Eliminar todos los contenedores detenidos
docker container prune
# Eliminar una imagen
docker rmi mi-contenedor-web
# Eliminar imágenes no utilizadas
docker image pruneMonitoreo y logs
# Ver logs de un contenedor
docker logs mi-servidor-web
# Seguir logs en tiempo real
docker logs -f mi-servidor-web
# Ver logs con timestamps
docker logs -t mi-servidor-web
# Ver estadísticas de recursos
docker stats
# Ver información detallada de un contenedor
docker inspect mi-servidor-web🚀 Comandos para Imágenes
# Listar imágenes locales
docker images
# Descargar una imagen
docker pull nginx:latest
# Construir una imagen desde Dockerfile
docker build -t mi-imagen-personalizada .
# Etiquetar una imagen
docker tag mi-imagen-personalizada mi-repo/mi-imagen:v1.0
# Subir imagen a registro
docker push mi-repo/mi-imagen:v1.0🔄 Ejecución de Contenedores
# Ejecutar contenedor en primer plano
docker run -p 8080:80 nginx
# Ejecutar en segundo plano (detached)
docker run -d -p 8080:80 --name mi-web nginx
# Ejecutar con variables de entorno
docker run -d -e "ENV=production" -p 8080:80 nginx
# Ejecutar con volúmenes
docker run -d -v /ruta/local:/ruta/contenedor -p 8080:80 nginx
# Ejecutar y acceder al shell
docker exec -it mi-servidor-web bash🎯 Docker Compose
¿Qué es Docker Compose?
Herramienta que permite definir y ejecutar múltiples contenedores en conjunto mediante un archivo docker-compose.yml.
Ejemplo de docker-compose.yml
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
networks:
- app-network
database:
image: postgres:13
environment:
POSTGRES_DB: myapp
POSTGRES_USER: user
POSTGRES_PASSWORD: password
networks:
- app-network
networks:
app-network:
driver: bridgeComandos de Docker Compose
# Iniciar servicios
docker-compose up
# Iniciar en segundo plano
docker-compose up -d
# Detener servicios
docker-compose down
# Ver logs
docker-compose logs
# Listar servicios
docker-compose ps
# Ejecutar comando en servicio específico
docker-compose exec web bash🏗️ Explicación de Conceptos Clave
Imagen
Es una plantilla que contiene el sistema operativo, el software y las configuraciones necesarias para ejecutar una aplicación. Las imágenes son inmutables y se almacenan en registros como Docker Hub.
Contenedor
Es una instancia en ejecución de una imagen. Cuando ejecutas docker run, estás creando un contenedor a partir de una imagen. Cada contenedor es aislado y tiene su propio sistema de archivos.
Puertos
El contenedor tiene su propio entorno aislado, por lo que debes mapear los puertos del contenedor a los puertos de tu máquina para acceder a los servicios.
# Sintaxis: -p puerto_host:puerto_contenedor
docker run -p 8080:80 nginxVolúmenes
Permiten persistir datos fuera del contenedor. Útiles para bases de datos, archivos de configuración, o cualquier dato que deba sobrevivir al ciclo de vida del contenedor.
# Montar volumen
docker run -v /ruta/local:/ruta/contenedor nginx
# Usar volúmenes con nombre
docker volume create mi-volumen
docker run -v mi-volumen:/ruta/contenedor nginx💡 Ejemplo Práctico: Servidor Web
# 1. Descargar imagen de Nginx
docker pull nginx:latest
# 2. Ejecutar contenedor
docker run -d --name mi-servidor-web -p 8080:80 nginx
# 3. Verificar que está ejecutándose
docker ps
# 4. Acceder a la aplicación
curl http://localhost:8080
# 5. Ver logs
docker logs mi-servidor-web
# 6. Detener contenedor
docker stop mi-servidor-web
# 7. Eliminar contenedor
docker rm mi-servidor-web🛠️ Comandos Avanzados
# Redes en Docker
docker network ls
docker network create mi-red
# Limpieza de recursos
docker system prune
docker system df
# Copiar archivos entre host y contenedor
docker cp archivo.txt mi-contenedor:/ruta/destino/
docker cp mi-contenedor:/ruta/origen/archivo.txt ./
# Inspeccionar recursos
docker inspect nombre-contenedor
docker image inspect nombre-imagen
docker network inspect nombre-red📊 Comandos de Monitoreo
# Ver uso de recursos en tiempo real
docker stats
# Ver información detallada
docker inspect nombre-contenedor
# Ver procesos ejecutándose en contenedor
docker top nombre-contenedor
# Ver historial de una imagen
docker history nombre-imagen✅ Conclusión
Este tutorial te proporciona una base sólida para trabajar con Docker. Puedes expandir estos conocimientos añadiendo:
Integración con bases de datos
Balanceadores de carga
Orquestación con Docker Swarm o Kubernetes
Registros privados de imágenes
Pipelines de CI/CD con Docker
Próximos Pasos Recomendados
Practica creando tus propias imágenes con Dockerfile
Experimenta con Docker Compose para aplicaciones multi-contenedor
Explora Docker Hub para descubrir imágenes oficiales
Aprende sobre mejores prácticas de seguridad en Docker
¡Espero que este tutorial te sea útil para comenzar tu journey en el mundo de los contenedores!
Comentarios
Publicar un comentario