Definición y propósitode Docker
Definición de Docker
Docker es una plataforma de
contenedorización que permite
empaquetar aplicaciones y sus
dependencias en contenedores
ligeros. Estos contenedores son
portables y funcionan de manera
consistente en cualquier entorno que
soporte Docker.
Propósito de Docker
El principal propósito de Docker es
resolver el problema de "funciona en
mi máquina" al asegurar que las
aplicaciones se ejecuten de manera
idéntica en diferentes entornos,
desde desarrollo hasta producción.
5.
Contenedores vs máquinasvirtuales
Contenedores
Los contenedores comparten
el kernel del sistema
operativo host, lo que los
hace más ligeros y rápidos
que las máquinas virtuales.
Máquinas Virtuales
Las máquinas virtuales
virtualizan hardware
completo, lo que las hace
más pesadas y lentas en
comparación con los
contenedores.
Ejemplo Práctico
En un servidor con 8 GB de
RAM, puedes ejecutar 50
contenedores, mientras que
solo podrías ejecutar 5
máquinas virtuales.
Componentes del sistemaDocker
Docker Engine
Docker Engine es el corazón del sistema, que incluye el daemon dockerd y la API REST
para comunicación.
CLI
La CLI (línea de comandos) permite a los
usuarios interactuar con Docker,
ejecutando comandos como docker run y
docker ps.
Curiosidad
El daemon dockerd se ejecuta en
segundo plano y gestiona todos los
aspectos del ciclo de vida de los
contenedores.
8.
Docker Client yDocker Daemon
Docker Client y Daemon
El Docker Client es la interfaz de línea de
comandos que los usuarios utilizan para
interactuar con Docker. El Docker
Daemon es un proceso en segundo
plano que escucha peticiones de la API y
gestiona objetos Docker como
imágenes, contenedores, redes y
volúmenes.
9.
Docker Registries yobjetos
Docker Registries
Docker Registries almacenan
imágenes Docker, siendo Docker
Hub el registry público por
defecto. Los objetos principales
incluyen imágenes,
contenedores, redes y
volúmenes.
Curiosidad
Docker Hub aloja más de 8 millones de
imágenes públicas, desde sistemas
operativos ligeros como Alpine Linux hasta
aplicaciones enterprise.
Definición de imágenesDocker
Definición de
Imágenes
Una imagen Docker es una
plantilla de solo lectura que
contiene instrucciones para
crear un contenedor. Incluye el
sistema operativo,
aplicaciones y dependencias
necesarias.
Ejemplo Práctico
La imagen oficial de nginx
ocupa solo 133 MB, mientras
que una imagen completa de
Ubuntu puede ocupar hasta
2.4 GB.
12.
Contenedores desde imágenes
Contenedores
Uncontenedor es una
instancia ejecutable de
una imagen. Se crea
añadiendo una capa de
escritura sobre la
imagen base.
Ventajas
Los contenedores son
aislados, portables y
pueden iniciarse,
detenerse, moverse o
eliminarse
rápidamente.
Curiosidad
Un contenedor puede
arrancar en menos de
500 milisegundos, más
rápido que abrir una
aplicación nativa.
13.
Gestión de contenedores
Comandosde 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. Cada
contenedor tiene un ID único y puede tener nombres descriptivos.
Introducción al Dockerfile
Dockerfile
UnDockerfile 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.
Capas
Incrementales
Cada instrucción en el
Dockerfile crea una nueva
capa en la imagen final, lo
que permite la reutilización
de capas y una
construcción más eficiente.
Curiosidad
Las instrucciones se
ejecutan en orden, y
cambiar una línea solo
reconstruye las capas
posteriores, ahorrando
tiempo en futuras
construcciones.
16.
Proceso de construcciónde imágenes
02
01
Construcción de Imágenes
El comando docker build lee el Dockerfile y ejecuta
instrucciones secuencialmente. Cada instrucción
crea una capa intermedia que se almacena en
caché para futuras construcciones.
Ejemplo Práctico
El comando docker build -t mi-app:1.0 . crea una
imagen etiquetada desde el Dockerfile actual, lista
para ejecutarse o distribuirse.
Definición de serviciosen Docker
Servicios
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.
Curiosidad
En Docker Swarm, puedes escalar de 1 a 100 réplicas con un solo comando: docker
service scale mi-app=100.
19.
Docker Compose yorquestación
Docker Compose
Docker Compose define
servicios multi-contenedor
usando un archivo YAML.
Permite ejecutar aplicaciones
complejas con múltiples
servicios interconectados.
Docker Swarm
Docker Swarm proporciona orquestación nativa para gestionar
clústeres de Docker en producción, facilitando la administración de
múltiples contenedores.
Ejemplo Práctico
Un archivo docker-compose.yml puede levantar WordPress + MySQL
+ Redis con un solo comando docker-compose up.