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

bash
# 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

bash
# 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-web

Eliminar contenedores e imágenes

bash
# 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 prune

Monitoreo y logs

bash
# 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

bash
# 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

bash
# 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

yaml
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: bridge

Comandos de Docker Compose

bash
# 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.

bash
# Sintaxis: -p puerto_host:puerto_contenedor
docker run -p 8080:80 nginx

Volú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.

bash
# 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

bash
# 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

bash
# 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

bash
# 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

  1. Practica creando tus propias imágenes con Dockerfile

  2. Experimenta con Docker Compose para aplicaciones multi-contenedor

  3. Explora Docker Hub para descubrir imágenes oficiales

  4. 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

Entradas más populares de este blog

ejercicios-Crear Carpeta y Archivo de Texto en Ubuntu

Instalar Docker en Ubuntu Server usando docker.io

Tutorial de Carpetas y Directorios en Ubuntu Linux