Introducción
Este completo tutorial de Docker proporciona a los desarrolladores y profesionales de TI conocimientos esenciales sobre la tecnología de contenedores. Aprenda a configurar Docker en Ubuntu, comprenda los conceptos centrales y aproveche la contenedorización para la implementación consistente de aplicaciones en diferentes entornos informáticos.
Conceptos Fundamentales de Docker
Introducción a la Tecnología Docker
Docker es una potente plataforma de tecnología de contenedores que revoluciona la implementación y la virtualización de software. Como herramienta de código abierto, Docker permite a los desarrolladores empaquetar, distribuir y ejecutar aplicaciones de forma consistente en diferentes entornos informáticos.
Conceptos Fundamentales de Docker
¿Qué es Docker?
Docker es una tecnología de virtualización ligera que permite a los desarrolladores crear, implementar y ejecutar aplicaciones mediante contenedores. A diferencia de las máquinas virtuales tradicionales, los contenedores comparten el kernel del sistema host, lo que los hace más eficientes y rápidos de iniciar.
Arquitectura de Contenedores
graph TD
A[Motor Docker] --> B[Entorno de Ejecución de Contenedores]
A --> C[Imágenes Docker]
B --> D[Contenedor de la Aplicación]
C --> D
Componentes Clave de Docker
| Componente | Descripción | Propósito |
|---|---|---|
| Motor Docker | Entorno de ejecución central | Gestiona el ciclo de vida del contenedor |
| Imagen Docker | Plantilla de solo lectura | Define la configuración del contenedor |
| Contenedor Docker | Instancia ejecutable | Ejecuta la aplicación |
Instalación en Ubuntu 22.04
## Actualizar el índice de paquetes
sudo apt update
## Instalar dependencias
sudo apt install apt-transport-https ca-certificates curl software-properties-common
## Añadir la clave GPG oficial de Docker
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## Configurar el repositorio estable
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## Instalar el motor Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Comandos Básicos de Docker
## Comprobar la versión de Docker
docker --version
## Verificar la instalación de Docker
docker run hello-world
## Listar contenedores en ejecución
docker ps
## Listar todos los contenedores
docker ps -a
Ventajas de Docker
Docker proporciona beneficios significativos para el desarrollo de software moderno:
- Entorno consistente entre desarrollo y producción
- Implementación de aplicaciones más rápida
- Mejora de la utilización de recursos
- Gestión simplificada de dependencias
- Escalabilidad y portabilidad mejoradas
Creación de Imágenes Docker
Comprensión de las Imágenes Docker
Las imágenes Docker son plantillas de solo lectura utilizadas para crear contenedores. Contienen el código de la aplicación, el entorno de ejecución, las bibliotecas, las variables de entorno y los archivos de configuración necesarios para ejecutar una aplicación.
Fundamentos de Dockerfile
Un Dockerfile es un documento de texto que contiene instrucciones para construir una imagen Docker. Cada instrucción crea una nueva capa en la imagen.
Estructura de Dockerfile
graph TD
A[Imagen Base] --> B[Instalar Dependencias]
B --> C[Copiar Código de la Aplicación]
C --> D[Establecer Variables de Entorno]
D --> E[Definir Comando de Inicio]
Instrucciones Comunes de Dockerfile
| Instrucción | Propósito | Ejemplo |
|---|---|---|
| FROM | Especificar imagen base | FROM ubuntu:22.04 |
| RUN | Ejecutar comandos | RUN apt-get update |
| COPY | Copiar archivos a la imagen | COPY ./app /application |
| WORKDIR | Establecer directorio de trabajo | WORKDIR /application |
| CMD | Definir comando predeterminado | CMD ["python", "app.py"] |
Creación de una Imagen Simple de Aplicación Web Python
Dockerfile de Ejemplo
## Usar la imagen oficial de Python como imagen base
FROM python:3.9-slim
## Establecer el directorio de trabajo
WORKDIR /app
## Copiar el archivo de requisitos
COPY requirements.txt .
## Instalar dependencias
RUN pip install --no-cache-dir -r requirements.txt
## Copiar el código de la aplicación
COPY . .
## Exponer puerto
EXPOSE 5000
## Definir comando de inicio
CMD ["python", "app.py"]
Construcción de la Imagen Docker
## Construir la imagen con etiqueta
docker build -t hello-world-app .
## Listar imágenes locales
docker images
## Ejecutar la imagen creada
docker run -p 5000:5000 hello-world-app
Comandos de Administración de Imágenes
## Eliminar imagen específica
docker rmi hello-world-app
## Eliminar todas las imágenes no utilizadas
docker image prune
## Descargar imagen desde Docker Hub
docker pull ubuntu:22.04
Buenas Prácticas
- Usar imágenes base mínimas
- Minimizar el número de capas
- Evitar instalar paquetes innecesarios
- Usar compilaciones multietapa para imágenes más pequeñas
- Aprovechar la caché de compilación de forma eficiente
Administración de Contenedores
Descripción General del Ciclo de Vida de los Contenedores
Los contenedores Docker tienen un ciclo de vida definido con múltiples estados, desde la creación hasta la terminación. Comprender estos estados es crucial para una gestión eficaz de los contenedores.
stateDiagram-v2
[*] --> Created
Created --> Running
Running --> Paused
Paused --> Running
Running --> Stopped
Stopped --> Removed
Removed --> [*]
Operaciones Básicas con Contenedores
Comandos de Administración de Contenedores
| Comando | Función | Ejemplo |
|---|---|---|
| docker create | Crear un contenedor | docker create nginx |
| docker start | Iniciar un contenedor | docker start container_id |
| docker stop | Detener un contenedor en ejecución | docker stop container_id |
| docker restart | Reiniciar un contenedor | docker restart container_id |
| docker rm | Eliminar un contenedor | docker rm container_id |
Ejecución de Contenedores
## Ejecutar contenedor en primer plano
docker run nginx
## Ejecutar contenedor en segundo plano
docker run -d nginx
## Ejecutar contenedor con asignación de puertos
docker run -p 8080:80 nginx
## Ejecutar contenedor con nombre personalizado
docker run --name web-server nginx
Inspección y Monitoreo de Contenedores
## Listar contenedores en ejecución
docker ps
## Listar todos los contenedores
docker ps -a
## Ver registros del contenedor
docker logs container_id
## Inspeccionar detalles del contenedor
docker inspect container_id
## Monitorear el uso de recursos del contenedor
docker stats
Redes de Contenedores
## Listar redes Docker
docker network ls
## Crear una red personalizada
docker network create mynetwork
## Conectar un contenedor a la red
docker network connect mynetwork container_id
Administración Avanzada de Contenedores
Límites de Recursos del Contenedor
## Limitar CPU y memoria
docker run -d \
--cpus="1.5" \
--memory="512m" \
nginx
Escalado de Contenedores
## Crear varias instancias de contenedores
docker run -d -p 8001:80 nginx
docker run -d -p 8002:80 nginx
docker run -d -p 8003:80 nginx
Estrategias de Implementación de Contenedores
Gestión de Datos Persistentes
## Crear un volumen
docker volume create myvolume
## Montar el volumen en el contenedor
docker run -v myvolume:/app/data nginx
Configuración del Entorno
## Establecer variables de entorno
docker run -e DATABASE_URL=localhost nginx
Resumen
Docker revoluciona el desarrollo de software al permitir contenedores ligeros y portátiles que simplifican la implementación de aplicaciones. Al dominar los componentes centrales de Docker, el proceso de instalación y los comandos básicos, los desarrolladores pueden crear entornos de software más eficientes, escalables y reproducibles con una sobrecarga mínima y la máxima flexibilidad.



