01 ¿Qué es Docker? 02 Arquitectura Docker 03 Imágenes y contenedores 04 Dockerfile y construcción 05 Servicios y orquestación CONTENTS
01 ¿Qué es Docker?
Definición y propósito de Docker Definición de Docker Docker es una plataforma de contenedorización que permite desplegar aplicaciones en contenedores ligeros y portables. Automatiza el proceso de empaquetar código y dependencias, asegurando que las aplicaciones funcionen de manera consistente en cualquier entorno. Propósito de Docker El principal propósito de Docker es resolver el problema de compatibilidad entre entornos de desarrollo y producción. Al empaquetar aplicaciones con todas sus dependencias en contenedores, se garantiza que funcionen igual en cualquier máquina. Curiosidad sobre Docker El logo de Docker es una ballena que transporta contenedores, inspirado en el sistema de transporte marítimo. Esto simboliza cómo Docker transporta aplicaciones de un entorno a otro de manera eficiente y segura.
Contenedores vs máquinas virtuales Las máquinas virtuales virtualizan hardware completo, incluyendo el kernel. Esto las hace más pesadas y lentas, pero ofrecen mayor aislamiento y soporte para múltiples sistemas operativos. Máquinas Virtuales Los contenedores comparten el kernel del sistema operativo del host, lo que los hace más ligeros y rápidos. Esto permite ejecutar más aplicaciones en menos recursos, ideal para entornos de alta densidad. Contenedores
02 Arquitectura Docker
Componentes del sistema Docker Docker Engine Docker Engine es el núcleo del sistema, que incluye el daemon dockerd, la API REST y la CLI. Gestiona el ciclo de vida de los contenedores, desde su creación hasta su eliminación. 01 Daemon Docker El daemon dockerd es un proceso en segundo plano que escucha peticiones de la API y gestiona objetos Docker como imágenes, contenedores, redes y volúmenes. 02 API REST La API REST permite la comunicación entre el Docker Client y el Docker Daemon, facilitando la interacción con Docker desde aplicaciones y servicios externos. 03 CLI de Docker La CLI de Docker es la interfaz de línea de comandos que los usuarios utilizan para interactuar con Docker. Permite ejecutar comandos como docker run, docker ps y docker stop. 04
Docker Client y Docker Daemon Interacción entre Client y Daemon El Docker Client envía comandos al Docker Daemon, que ejecuta las operaciones solicitadas. Esta separación permite que el daemon funcione en segundo plano mientras el cliente interactúa con el usuario.
Docker Registries y objetos Docker Registries Los Docker Registries almacenan imágenes Docker. Docker Hub es el registry público más popular, pero también puedes crear registries privados para tus imágenes. Objetos Docker Los objetos principales en Docker incluyen imágenes, contenedores, redes y volúmenes. Cada uno tiene un propósito específico y se gestiona a través de comandos de Docker. Curiosidad sobre Docker Hub Docker Hub aloja más de 8 millones de imágenes públicas, desde sistemas operativos ligeros como Alpine Linux hasta aplicaciones empresariales complejas.
03 Imágenes y contenedores
Definición de imágenes Docker Qué es una imagen Docker Una imagen Docker es una plantilla de solo lectura que contiene todo lo necesario para ejecutar una aplicación, incluyendo el sistema operativo, aplicaciones y dependencias. Se construye mediante un Dockerfile. Ejemplo práctico de imágenes La imagen oficial de nginx ocupa solo 133 MB, mientras que una imagen completa de Ubuntu puede ocupar hasta 2.4 GB. Esto muestra la eficiencia de las imágenes Docker.
Kernel compartido en contenedores Reutilización del kernel Los contenedores reutilizan el kernel del sistema operativo del host, lo que los hace más ligeros y rápidos. Esto permite ejecutar más aplicaciones en menos recursos. Aislamiento de contenedores A pesar de compartir el kernel, los contenedores son aislados mediante namespaces y cgroups, lo que garantiza que cada contenedor funcione de manera independiente. Comparación con VMs En contraste, cada máquina virtual incluye su propio kernel completo, lo que aumenta el consumo de recursos y el tiempo de arranque. Esto hace que los contenedores sean ideales para entornos de alta densidad.
Contenedores desde imágenes 02 01 Creación de contenedores Un contenedor es una instancia ejecutable de una imagen. Se crea al ejecutar una imagen, añadiendo una capa de escritura sobre la imagen base. Esto permite que los contenedores sean portables y rápidos de iniciar. Curiosidad sobre contenedores Un contenedor puede arrancar en menos de 500 milisegundos, mucho más rápido que abrir una aplicación nativa. Esto permite una escalabilidad y flexibilidad sin precedentes.
Gestión de contenedores Comandos de gestión Los contenedores se gestionan mediante comandos como docker run para crear y ejecutar, docker ps para listar activos, docker stop para detener y docker rm para eliminar. Identificación de contenedores Cada contenedor tiene un ID único y puede tener nombres descriptivos, lo que facilita la gestión y el seguimiento de los contenedores en ejecución. Ejemplo práctico de gestión Con el comando docker run --name mi-web -p 80:80 nginx, puedes ejecutar un servidor web accesible en localhost:80. Esto demuestra la facilidad de uso de Docker. Ventajas de la gestión La gestión centralizada de contenedores permite un control preciso sobre el ciclo de vida de las aplicaciones, desde su creación hasta su eliminación.
04 Dockerfile y construcción
Introducción al Dockerfile Capas en Dockerfile Cada instrucción en un Dockerfile crea una nueva capa en la imagen final. Esto permite una construcción incremental y eficiente, aprovechando la caché para futuras construcciones. 01 Qué es un Dockerfile Un Dockerfile es un archivo de texto que contiene instrucciones para construir una imagen Docker. Define la imagen base, comandos a ejecutar, archivos a copiar y puertos a exponer. Curiosidad sobre Dockerfile Las instrucciones se ejecutan en orden, y cambiar una línea solo reconstruye las capas posteriores. Esto ahorra tiempo y recursos durante el proceso de construcción. 02
Proceso de construcción de imágenes Comando docker build El comando docker build lee el Dockerfile y ejecuta las instrucciones secuencialmente. Cada instrucción crea una capa intermedia que se almacena en caché para futuras construcciones. Ejemplo práctico de construcción Con el comando docker build -t mi-app:1.0 ., puedes crear una imagen etiquetada desde el Dockerfile actual. Esto permite versionar y distribuir imágenes de manera fácil y eficiente.
05 Servicios y orquestación
Definición de servicios en Docker Qué es un servicio Un servicio es un contenedor en producción que escala horizontalmente. Define cómo se ejecuta una imagen en producción, incluyendo número de réplicas, puertos, redes y volúmenes. Ventajas de los servicios Los servicios permiten ejecutar múltiples instancias de una aplicación de manera eficiente y escalable. Esto es ideal para entornos de producción donde se requiere alta disponibilidad. Curiosidad sobre servicios En Docker Swarm, puedes escalar de 1 a 100 réplicas con un solo comando: docker service scale mi-app=100. Esto demuestra la potencia de la orquestación en Docker.
Docker Compose y orquestación Docker Compose Docker Compose define servicios multi-contenedor usando un archivo YAML. Permite ejecutar aplicaciones complejas con múltiples servicios interconectados de manera fácil y eficiente. Ejemplo práctico de Compose Un archivo docker-compose.yml puede levantar WordPress + MySQL + Redis con un solo comando docker-compose up. Esto simplifica la gestión de aplicaciones complejas y dependencias.