Introducción a los contenedores
Docker
ThinkTIC, Dirección General de Reindustrialización, Innovación e
Internacionalización, Gobierno de La Rioja
4-8 de octubre, 2021
Marcos Manuel Ortega, director de Indavelopers
Material
● Diapositivas (este doc): bit.ly/thinkticdocker
● Play with Docker:
○ labs.play-with-docker.com (entorno de trabajo)
○ training.play-with-docker.com/alacart (ejercicios)
● Crear cuenta de Docker: www.docker.com
2
● Docker for beginners - Linux
● First Alpine Linux containers
● Dockerfile ref
● Doing more with Docker images
● Docker images deeper dive
● Multi-stage builds
● Reducing images size by 50%
● Docker volumes
● Docker networking hands-on lab
Ejercicios ●
●
Go + Docker
12factor app
● Modernizing traditional Java applications
training.play-with-docker.com ● Application containerization and
microservice orchestration
● Node.js with SQL Server on Docker
● Swarm mode introduction
● Swarm stack introduction
● Docker Swarm config files
● Docker orchestration hands-on lab
● Security lab: Seccomp
● Security lab: capabilities 3
Módulo 0: Introducción al curso
4
Introducción al curso
● “Introducción a los contenedores Docker”
● Organizado por ThinkTIC, Dirección General de Reindustrialización,
Innovación e Internacionalización, Gobierno de La Rioja
● Duración: 15 h, 5 sesiones de 3 h
● Fechas: 4-8 de octubre, 2021
● Horario: 17:00 a 20:00
5
Marcos Manuel Ortega
● Consultor, arquitecto y formador
● Director de Indavelopers
● Cloud computing, big data e IoT
● Instructor autorizado en Google Cloud
● Especializado en GCP con 9+ años de experiencia
6
Organizador múltiples comunidades tecnológicas y cloud evangelist
7
Presentación del alumno
● Nombre
● Perfil/rol
● Empresa
● Formulario: Formulario inicial para alumnos
○ Interés e inquietudes por el curso
○ Experiencia previa en administración de sistemas Linux, desarrollo de aplicaciones y/o
contenedores
○ Necesaria cuenta de Docker
8
Metodología y evaluación
Metodología: Evaluación:
● 5 sesiones de 3 h ● Asistencia diaria (mín. 80%)
● Teoría + práctica ● Realización de los ejercicios
● Descanso de 15 minutos ● Examen final (último día)
9
0. Introducción al curso
1. Introducción a los
contenedores y Docker
1.1. Dockerfile
1.2. Imágenes de contenedores
Contenidos 2.
1.3.
1.4.
Registros de contenedores
Ejecución de contenedores
Almacenamiento
2.1. Volúmenes
5 sesiones de 3 h 2.2. Bind mounts
3. Networking
4. Docker Compose
5. Docker Swarm
6. Operaciones
10
Módulo 1: Contenedores Docker
11
“En mi máquina
funciona”
12
Dev: OK
Test: PASS
Prod: 💢💥🔥
13
“Dependency
hell” 😈👻
14
Portabilidad
15
Introducción a los contenedores
Nueva metáfora de virtualización de recursos:
● Estandarizados
● Pequeños, rápidos y ágiles
● Independientes del contenido
● Fácilmente portables
● Conectables
16
VMs vs
contenedores
Máquinas virtuales Contenedores
VMs:
Apps Apps Apps Apps Apps Apps
● OS completo individual
● Depende del hypervisor
Depend. Depend. Depend. Depend. Depend. Depend.
● Asociado a una infraestructura
● Conflictos de dependencias
● Grandes, pesadas y lentas OS OS OS Docker Engine
Contenedores: Hypervisor OS
● Kernel/OS compartido
● Desacoplado de infraestructura Infrastructura Infrastructura
● Ejecutable en cualquier sitio
● Dependencias empaquetadas
● Pequeños, ligeros y rápidos
17
“Inmutables y
efímeros”
18
“Mascotas vs
ganado”
19
Artefactos
estáticos y
portables, definidos
declarativamente
20
Microservicios,
agile, devOps
21
Introducción a Docker
Proyecto open-source para desarrollar y ejecutar contenedores.
Compuesto de múltiples herramientas:
docker engine, build, registry, hub
● Docker EE → Mirantis
● Docker y Moby
● containerd y OCI
22
Tecnologías
● Namespaces
● Procesos
● Cgroups
● Union filesystem
23
“Docker no inventó
los contenedores.
Pero los hizo
usables por
cualquiera”
24
Instalación y post-instalación
● Instalación (Linux, recomendado): docs.docker.com/engine/install
○ Instalar Windows Subsystem for Linux
● Post-instalación (Linux): docs.docker.com/engine/install/linux-postinstall
● Docker Desktop (Windows/Mac): docs.docker.com/desktop
25
Docker for IT pros
● First Alpine Linux containers
● Doing more with Docker images
26
Get started
Tutorial: get started (10 partes)
27
Construir una imagen
● Dockerfile
○ Referencia
○ Mejores prácticas
● Builds multi-stage
● Crear imagen base personalizada
28
Registros
● Docker Hub
● Crear tu propio registro: parte 1, partes 2 y 3
29
Volúmenes y bind-mounts
● Almacenamiento
● Volúmenes
● Bind mounts
● Tmpfs mounts
30
Networking para contenedores
● Networking
● Redes:
○ Bridge
○ Host
○ Overlay
● Deshabilitar redes para un contenedor
31
Docker Compose
● Overview
● Instalación
● Getting started
● En producción
● Ejemplos:
○ Django y PostgreSQL
○ Wordpress y MySQL
○ ASP.NET Core y MS SQL Server
32
Operaciones
● Docker cheat sheet
● Logging
● Métricas con Prometheus
● Automatización: inicio automático de Docker y contenedores, “live restore”
● Restricciones de recursos
● Múltiples servicios en un contenedor
● Orquestación: Docker Swarm y Kubernetes
33
CI/CD
● CI/CD con GitHub Actions:
○ Crear repositorio: GitHub
○ Tutorial
34
Módulo 2: Despedida
35
Retos
● Crear repos públicos en Docker Hub
● Contenerizar una webapp “hola mundo” en otro idioma con un webserver
○ Actualizar la webapp a una nueva versión
○ Crear contenedor con pruebas unitarias de webapp
● Contenerizar una herramienta de CLI que busque texto en un archivo
○ Monta directorio y acepta argumentos de archivo y texto
○ Contenedor con pruebas unitarias
○ Crear versión slim
● Contenerizar app slim “hola mundo” en idioma compilado sólo con
ejecutable
36
Examen final
37
¡Gracias por vuestra atención!
Marcos Manuel Ortega:
● www.indavelopers.com
● info@indavelopers.com
● LinkedIn: Marcos Manuel Ortega González
Material: XXX
38