Catecbol www.catecbol.com
Capacitación Tecnológica Científica para Bolivia facebook.com/catecbol
@catecbol
Contenedores Docker Ronny Bazan Antequera Estados Unidos
La unión es la fuerza
[email protected]
Introducción Personal Ronny Bazan Antequera • Licenciatura en Informática – UMSA • Promoción de Gobierno Electrónico mediante Software Libre – Japón • Administración/Configuración de Servidores y configuración de Redes de Datos Avanzada – India • Maestría en Ciencias de la Computación de Universidad de Missouri Columbia – EEUU • Cursando un doctorado en Ciencias de la Computación • Investigación en el área de Computación en Nube y redes de datos – EEUU
Contenedores Docker • Implementación del concepto de contenedores mediante la utilización de Docker
• Desplegar infraestructura multicapa utilizando nodos en la nube • Aplicar conceptos de balance de carga sobre un cluster de nodos Docker.
El gran reto
Múltiples métodos de transporte y almacenamiento
Variedad de objetos
Solución - estandarización Debería preocuparnos saber como los objetos interactúan entre si? Un contenedor estándar que contiene virtualmente cualquier objeto, se mantiene sellado hasta que llega al destino final
(Ejemplo, cajas al lado de barriles)
Durante su transporte, es cargado, descargado, empilado, transportado eficientemente sobre grandes distancias usando diferentes medios de transporte
Puedo realizar el transporte rápidamente? (Ejemplo desde un barco a un tráiler)
El gran reto en el área de sistemas Sitio web estático
Frontend
Backend
Usuarios de BD
Análisis de BD
Multi-capa
Solución - estandarización «Build, Ship and Run Any App, Anywhere» «Construir, Enviar y Ejecutar cualquier App, en Cualquier Lugar» Sitio web estático
Frontend
Backend
Usuarios de BD
Análisis de BD
Multi-capa
Que es Docker? • Es un proyecto de software libre que automatiza la disposición de aplicaciones dentro de contenedores software, mediante la provisión de una capa de abstracción • Docker provee abstracción a nivel de virtualización del Sistema Operativo
Virtualización regular
Docker
Como funciona? • Interior del contenedor: Código Librerías Package manager Aplicaciones Datos • Todos los servidores Linux parecen ser iguales
Devs
DevOps
– Desarrolladores
• Exterior del contenedor: Logging Acceso remoto Monitoreo Configuración de red de datos • Todos los contenedores tienen un comportamiento homogéneo
Ops
que se interesan en infraestructura informática – SysAdmins que tienen pasión por scripting y coding para desarrollo de herramientas de test y provisión
Entendiendo el eco sistema Docker • Docker Engine soporta múltiples Sistemas Operativos, Nubes Publicas e incluso Nubes privadas
Herramientas Docker • Docker hub
• Docker engine • Docker compose • Docker swarm
Docker Hub (Repositorio)
commit
Usuario
pull
Auto build
Github / BitBucket
Docker Hub
Host
Existen cientos de imágenes/Apps personalizadas (en repositorios públicos o privados), que pueden ser fácilmente descargados y reutilizados, usando simples comandos Docker Visitar Docker hub
Docker engine – Servidor Web Apache Bin/Libs Docker 130.127.215.160
Debian 8
Ubuntu 14.01.1 LTS
Sistema local
docker run -p 80:80 -d eboraas/apache
docker exec -it bash
docker images
docker stop
docker ps
docker images rm -f
Docker engine – Servidor Web con contenido
Apache Bin/Libs Docker 130.127.215.160 Sistema local
docker run -p 80:80 -d eboraas/apache
^
-v /opt/catecbol/:/var/www/html/
Docker compose docker-compose.yml base de datos: build: command: ports: volumes: links:
web server: image: wordpress depends on: database
Base de datos Acceso a datos mysql
web APP PHP
Presentación
Ejemplo Docker compose - Wordpress version: '2' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_PASSWORD: wordpress volumes: db_data:
Acceso a datos
Presentación
Múltiples servicios, múltiples puertos Apache
Bin/Libs
Wordpress
mysql
Bin/Libs Bin/Libs Docker 130.127.215.160
Sistema local
docker-compose up –d ssh -L 9090:localhost:8000
[email protected] Solo como ejemplo: Reenvío SSH, para utilizar nuestro navegador local para visualizar contenido en nodos remotos con IPs privadas
Docker swarm Servidor Web Bin/Libs
Diagrama físico
Docker
Docker
Docker
130.127.215.165
130.127.215.161
130.127.215.162
Master Node 130.127.215.165
Diagrama lógico worker1
worker2
130.127.215.161
130.127.215.162
Docker swarm - replicas En master docker swarm init --advertise-addr
Servidor Web Bin/Libs Master Node 130.127.215.165
En workers docker swarm join … Verificación docker node ls
worker1
worker2
130.127.215.161
130.127.215.162
Instalación de servicio en master docker service create --replicas 1 -p 80:80 --name web nginx Agregar replicas docker service ls
/
Agregar replicas docker service ps web
docker service scale web=2
Casos de Uso • • • • • •
Habilitar entorno de trabajo Integración de pruebas Evaluación rápida de software Microservicios Multi-Tenancy (recursos compartidos) Unificación para desarrollo, pruebas y producción
Quieres aprender mas? • Play-with-Docker http://labs.play-with-docker.com/
• Autoaprendizaje https://training.docker.com/category/self-paced-online
Catecbol www.catecbol.com
Capacitación Tecnológica Científica para Bolivia facebook.com/catecbol
@catecbol
Gracias
[email protected] Ronny Bazan Antequera
La unión es la fuerza
[email protected]
Extras
Cumpleaños # 4 de Docker Docker esta reclutando “Docker Campus Ambassadors” (un estudiante capaz de aprender y transmitir conocimientos Docker en su Universidad. Docker proveerá - 5 repositorios privados - Un nodo en Docker Cloud por un año - Acceso al directorio de la comunidad estudiantil Docker
- Apoyo en la organización de eventos Docker - Entrenamiento especial - Swag (poleras, bolígrafos, etc)
Como aplicar? El contacto Catecbol en su Universidad deberá enviar un email con los datos de un representante a
[email protected]
Instalación Docker engine - Ubuntu Trusty $ sudo apt-get -y update $ sudo apt-get install apt-transport-https ca-certificates $ sudo apt-key adv \ --keyserver hkp://ha.pool.sks-keyservers.net:80 \ --recv-keys 58118E89F3A912897C070ADBF76221572C52609D $ echo deb https://apt.dockerproject.org/repo ubuntu-trusty main | sudo tee \ /etc/apt/sources.list.d/docker.list $ sudo apt-get -y update $ sudo apt-get -y install linux-image-extra-$(uname -r) linux-image-extra-virtual $ sudo apt-get -y install docker-engine $ sudo service docker start $ sudo usermod -aG docker catecbol https://docs.docker.com/engine/getstarted/step_one/
Instalación Docker compose $ sudo apt-get install curl $ sudo curl -L "https://github.com/docker/compose/releases/download/1.11.1/dockercompose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose $ docker-compose --version