Charla para la #PEUMConf2018.
Introducción a docker, cómo hemos evolucionado los entornos de desarrollo, desde la instalación de soluciones manualmente, uso de servidores, vagrant...
Realización de una demo práctica usando docker-compose para montar un entorno de desarrollo de algo tipo Php, Wordpress, Node...
2. Sobre mí
● Desarrollador web.
● Background: PHP, Javascript.
● Actualmente: Lead
Development en GOI.
Marco Bellido
we’re
hiring!
3. Disclaimers
● Charla introductoria: (Docker y Compose for dummies).
● Bases de Docker (no wrappers).
● Soy desarrollador PHP (y no me arrepiento).
4. Evolución del desarrollo (web)
● Servidores compartidos.
● Servidores dedicados.
● Virtual Machine (VMs).
● Vagrant.
● Docker.
5. ¿Qué es Docker?
● Basado en cgroups de UNIX
● Entornos aislados
INFRAESTRUCTURA
SISTEMA OPERATIVO HOST
HYPERVISOR
SO VM
BIN/LIBS
APP 1
SO VM
BIN/LIBS
APP 2
SO VM
BIN/LIBS
APP 3
Máquinas Virtuales
INFRAESTRUCTURA
SISTEMA OPERATIVO HOST
DOCKER DAEMON
BIN/LIBS
APP 1
BIN/LIBS
APP 2
BIN/LIBS
APP 3
Contenedores Docker
6. ¿Por qué Docker?
● Unificación de entornos de desarrollo.
● Misma versión en entornos dev/staging/producción.
● Versionado de configuraciones.
8. Docker Engine
● Núcleo de Docker
● Encargado de ejecución y mantenimiento de contenedores.
● Accesible a través de una API.
● Uso a través de docker-cli.
9. Docker Machine
● Instalación de una (o más) instancias de Docker Engine.
● Instalación sobre VMs (virtualbox, vmware, …).
● Administración en servidores.
● Tipo de instalación (antiguas) sobre MacOS, Windows.
10. Container, Image, Dockerfile
● Container: Entorno aislado sobre el que corre tu aplicación. Volátil.
● Image: “plantilla” del contenedor. Símil clase en POO.
● Dockerfile:
○ Definición de la imagen.
○ Creado por capas (como una cebolla).
○ Parte de una imagen base para ir añadiendo dependencias, exponer puertos, copiar
archivos, entrypoints, ...
12. Network, Volume
● Network:
Conectar uno o más containers a través de una red aislada (o bridge).
● Volume:
Containers volátiles. Sistema para mapear directorios del sistema host al
container para persistencia de datos.
13. Docker Registry
● Repositorio donde se alojan imágenes Docker.
● Registry oficial (por defecto): Docker Hub https://hub.docker.com
● Registry privados: (ej.: GitLab, AWS ECR, …)
14. Docker Compose
● Orquestación de contenedores.
● Conectados entre sí por network bridge por defecto.
● Servicios, volúmenes, containers, puertos…
● Definidos mediante un archivo YAML (docker-compose.yml).
21. Enlaces de interés
● Documentación oficial Docker
https://docs.docker.com
● Documentación oficial Docker Compose
https://docs.docker.com/compose
● Docker in Development (Chris Fidao)
https://serversforhackers.com/s/docker-in-development
● Dockerizando un API en Node (José Fonseca)
https://youtu.be/d8Be811G0Pc