Introducción
Este completo tutorial de Docker proporciona a los desarrolladores y profesionales de TI una comprensión fundamental de la tecnología de contenedores. Al explorar los conceptos centrales de Docker, los procedimientos de instalación y las técnicas prácticas de la línea de comandos, los participantes adquirirán habilidades prácticas para empaquetar, implementar y gestionar aplicaciones en diferentes entornos informáticos.
Conceptos Básicos de Docker
Introducción a Docker y la Tecnología de Contenedores
Docker es una plataforma potente para la contenedorización, que permite a los desarrolladores empaquetar, distribuir y ejecutar aplicaciones de forma consistente en diferentes entornos informáticos. Como herramienta clave en la implementación moderna de software, Docker simplifica el proceso de creación, gestión y escalado de aplicaciones.
Conceptos Fundamentales de Docker
graph TD
A[Imagen Docker] --> B[Contenedor Docker]
A --> C[Dockerfile]
B --> D[Entorno de Ejecución del Contenedor]
Docker introduce varios conceptos fundamentales:
| Concepto | Descripción |
|---|---|
| Imagen Docker | Plantilla de solo lectura que contiene el código de la aplicación y las dependencias |
| Contenedor Docker | Instancia ejecutable de una imagen |
| Dockerfile | Archivo de texto que define las instrucciones de creación de la imagen |
| Registro Docker | Repositorio para almacenar y compartir imágenes |
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 Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Comandos Básicos de Docker
## Comprobar la versión de Docker
## Extraer una imagen de Docker Hub
## Listar imágenes disponibles
## Ejecutar un contenedor
## Listar contenedores en ejecución
## Detener un contenedor
Ejemplo Práctico: Ejecutando una Aplicación Web Simple
## Extraer la imagen de Nginx
docker pull nginx:latest
## Ejecutar el contenedor de Nginx
docker run -d -p 8080:80 nginx:latest
## Verificar que el contenedor se está ejecutando
docker ps
Este ejemplo demuestra cómo desplegar rápidamente un servidor web utilizando Docker, mostrando su simplicidad y eficiencia en el despliegue de software.
Gestión de Contenedores
Operaciones del Ciclo de Vida de los Contenedores
Docker proporciona herramientas completas para gestionar los ciclos de vida de los contenedores, permitiendo a los desarrolladores controlar y manipular los contenedores de forma eficiente.
graph LR
A[Creado] --> B[En ejecución]
B --> C[Detenido]
C --> D[Eliminado]
D --> E[Reiniciado]
Comandos de Gestión de Contenedores
| Comando | Función | Ejemplo |
|---|---|---|
| docker create | Crear un contenedor | docker create nginx |
| docker start | Iniciar un contenedor detenido | docker start <id_contenedor> |
| docker stop | Detener un contenedor en ejecución | docker stop <id_contenedor> |
| docker restart | Reiniciar un contenedor | docker restart <id_contenedor> |
| docker rm | Eliminar un contenedor | docker rm <id_contenedor> |
Control Avanzado de Contenedores
## Ejecutar contenedor con nombre personalizado
docker run --name web-server -d nginx:latest
## Inspeccionar detalles del contenedor
docker inspect web-server
## Ver registros del contenedor
docker logs web-server
## Ejecutar comandos dentro del contenedor en ejecución
docker exec -it web-server /bin/bash
Gestión de Recursos de Contenedores
## Limitar CPU y memoria del contenedor
docker run -d --cpus=0.5 --memory=512m nginx:latest
## Listar contenedores en ejecución con uso de recursos
docker stats
Operaciones de Gestión de Imágenes
## Listar imágenes locales
docker images
## Eliminar una imagen específica
docker rmi nginx:latest
## Eliminar imágenes no utilizadas
docker image prune
## Extraer una versión específica de la imagen
docker pull ubuntu:20.04
Gestión de Redes de Contenedores
## Crear una red personalizada
docker network create mynetwork
## Ejecutar un contenedor en una red específica
docker run --network=mynetwork nginx:latest
Técnicas Avanzadas de Docker
Construcciones Multietapa
Las construcciones multietapa optimizan la complejidad de los Dockerfile y reducen el tamaño final de la imagen.
## Etapa de construcción
FROM golang:1.17 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
## Etapa de producción
FROM alpine:latest
COPY --from=builder /app/myapp /usr/local/bin/
CMD ["myapp"]
Flujo de Trabajo de Docker Compose
graph LR
A[Archivo de Docker Compose] --> B[Definición del Servicio]
B --> C[Orquestación de Contenedores]
C --> D[Aplicaciones en Red]
Ejemplo de Configuración de Compose
version: "3"
services:
web:
image: nginx:latest
ports:
- "8080:80"
database:
image: postgres:12
environment:
POSTGRES_PASSWORD: secret
Técnicas de Optimización del Rendimiento
| Técnica | Descripción |
|---|---|
| Caché de Capas | Minimizar la reconstrucción de capas |
| .dockerignore | Excluir archivos innecesarios |
| Imágenes Alpine | Usar imágenes base mínimas |
Redes Avanzadas
## Crear una red puente personalizada
docker network create --driver bridge isolated_network
## Conectar un contenedor a una red específica
docker run --network=isolated_network nginx:latest
Estrategias de Gestión de Volúmenes
## Crear un volumen con nombre
docker volume create app-data
## Montar el volumen en el contenedor
docker run -v app-data:/var/lib/data nginx:latest
Monitorización de Contenedores
## Métrica de contenedores en tiempo real
## Inspeccionar los registros del contenedor
Buenas Prácticas de Seguridad
## Ejecutar el contenedor como usuario no root
docker run --user 1000 nginx:latest
## Establecer el sistema de archivos como de solo lectura
docker run --read-only nginx:latest
Resumen
Docker revoluciona la implementación de software al proporcionar una plataforma consistente y eficiente para la creación de contenedores. A través de este tutorial, los lectores han aprendido conceptos esenciales como imágenes Docker, contenedores y los fundamentos de Dockerfile, junto con habilidades prácticas para instalar Docker, gestionar contenedores y ejecutar aplicaciones web. Estas habilidades forman una base fundamental para el desarrollo de software moderno y la gestión de infraestructura.



