Slide 1

Slide 1 text

Taller Docker

Slide 2

Slide 2 text

Introducción al ecosistema Docker

Slide 3

Slide 3 text

3 Proyecto Open source • 2MM+ Imágenes descargadas • 2000+ Contribuyentes • 40K+ Estrellas en GitHub • 200K+ App Dockerizadas • 240 Meetups en más de 70 países • 95K Miembros de Meetup ¿Qué es Docker? Comunidad Docker Docker Inc Proveedor de contenedores como un servicio • Plataforma de Integración para desarrolladores y operaciones • Soporte técnico Patrocinador del proyecto Docker • Principal patrocinador del proyecto Docker • Apoya a mantenedores del proyecto

Slide 4

Slide 4 text

Ecosistema Docker Dev Tools Official Repositories Operating Systems Big Data Service Discovery Build / Continuous Integration Configuration Management Consulting &Training Management Storage Clustering & Scheduling Networking Infrastructure & Service Providers Storage Security Monitoring & Logging 4

Slide 5

Slide 5 text

Quién soy yo Felipe de Morais: ● Carioca da gema ● Enamorado por comunidades ● Consultor en Thoughtworks ● Site: felipedemorais.com.br ● Medium: medium.com/@felipedemoraes ● Twitter: felipedemorais_ ● Github: lipemorais

Slide 6

Slide 6 text

Quién soy yo Felipe de Morais: ● Carioca da gema ● Enamorado por las comunidades ● Consultor en Thoughtworks ● Site: felipedemorais.com.br ● Medium: medium.com/@felipedemoraes ● Twitter: felipedemorais_ ● Github: lipemorais

Slide 7

Slide 7 text

Básico de Docker Docker Image La base de un container Docker Docker Container Es una unidad estándar en la cual reside el servicio de una aplicación Docker Engine Crea, encapsula y ejecuta los containers Docker que se pueden usar en el entorno físico o virtual, en los datacenters o cloud services. Docker Registry És un proyecto para compartir imágenes Docker. El más famoso es https://hub.docker.com/

Slide 8

Slide 8 text

Las aplicaciones están cambiando 8 Servicios con acoplamiento pequeño Muchos servidores pequeños ~2000 Hoy Monolitos Grandes servidores Cambios lentos Actualizaciones rápidas

Slide 9

Slide 9 text

El Desafío 9 Máquinas virtuales Servidor Nube pública Recuperación de desastre Computador del desarrollador Cluster de servidores Data Center Sítio estático Web Front End Procesamiento por lotes Usuarios de base de datos Análise de base de datos Filas API Endpoint Development Test & QA Production Scale Out

Slide 10

Slide 10 text

• Paquetes con los binarios y sus dependencias • Paquetes de software aislados unos de otros • Container como formato patrón • Fácil portabilidad entre entornos (GNU/Linux) • Permite la estandarización del proceso de desarrollo Solución: Containers Docker 10 Container

Slide 11

Slide 11 text

Solución 11 Static Website Web Front End Background Workers User DB Analytics DB Queue API Endpoint

Slide 12

Slide 12 text

• Build una vez y ejecute donde queiras • Un entorno de desarrollo portable, seguro y limpio para su aplicación • No te preocupes con paquetes perdidos, dependencias y otros dolores durante implantaciones adelante. Se ejecutó una vez, va ejecutar siempre • Ejecute cada aplicación aislada en su container, asi puedes ejecutar varias versiones de librerías y otras dependências para aplicaciones sin problemas. • Pruebas automatizadas, integración, packaging, todo que puedes hacer usando un script. • Reduce/Elimina preocupaciones con plataformas GNU/Linux distintas • Barato y sin penalidad de performance para usar en sus ambientes. Reinicio inmediato de todo entorno con la velocidad de inicio del servicio. Ese és el poder de Docker. Vista del desarrollador

Slide 13

Slide 13 text

Vista de Sysadmin •Configura una vez, ejecute en cualquier lugar • Hace el ciclo de vida completo ser más eficiente, consistente e replicable • Aumenta la calidad del código producido por los desarrolladores • Elimina la inconsistência entre desarrollo, pruebas, producción y entornos del cliente • Mejoras significativas con velocidad y confianza del continuous deployment (CD) e continuous integration (CI). • Container son más livianos, impactan significativamente en problemas de performance, custo, implantación y portabilidad que normalmente son asociados a VMs.

Slide 14

Slide 14 text

Docker for Mac/Windows/Linux Todo que necesitamos hoy estas en este enlace :D • tinyurl.com/install-docker-taller 14

Slide 15

Slide 15 text

Virtual Machines vs Containers

Slide 16

Slide 16 text

Camadas - Docker file system

Slide 17

Slide 17 text

Imágenes y Containers

Slide 18

Slide 18 text

Arquitectura

Slide 19

Slide 19 text

Comandos básicos Comando Explicación docker pull Descargar imagen docker images Listar las imágenes locales docker inspect Inspeccionar informaciones docker run Iniciar un container docker ps Listas los containers en ejecución docker exec Ejecutar comandos en container

Slide 20

Slide 20 text

docker pull

Slide 21

Slide 21 text

Ejercicio Descargar la imagen de Python # docker pull python

Slide 22

Slide 22 text

docker images

Slide 23

Slide 23 text

Asegúrese de que existe la imagen Python localmente # docker images Ejercicio

Slide 24

Slide 24 text

docker inspect

Slide 25

Slide 25 text

Ejercicio Asegure el comando patrón de la imagen # docker inspect python PS.: Asegúrese el valor de "CMD"

Slide 26

Slide 26 text

docker run Parámetro Explicación -d Ejecución en background --name Dar nombre para el container -m Limitar uso de memória RAM -c Balancear uso de CPU -p Port mapping -v Volume mapping -i Modo interactivo -t Usar terminal

Slide 27

Slide 27 text

Ejercicio Ejecute la imagen Python en modo interactivo y accede shell # docker run -it python

Slide 28

Slide 28 text

Restrición de memória # docker run -m

Slide 29

Slide 29 text

Ejercicio Ejecute el container con apenas 300MB de limite # docker run -it -m 300M python

Slide 30

Slide 30 text

Balanceamento de CPU # docker run -c Valor base 1024

Slide 31

Slide 31 text

Ejercicio Ejecute el container con mitad del peso # docker run -it -c 512 python

Slide 32

Slide 32 text

Port mapping # docker run -p puertahost:puertacontainer Docker host Virtual Machine Container 8080 80 192.168.99.100:80 Cliente

Slide 33

Slide 33 text

Ejercicio Efectúe mapeamento de la puerta 80 para el container da imagen tutum/apache-php # docker run -it -p 80:80 tutum/apache-php Accede la interface web

Slide 34

Slide 34 text

Port mapping # docker run -v volumehost:volumecontainer Docker host Virtualbox Container /Users/felipe/app Cliente /Users /app

Slide 35

Slide 35 text

Ejercicio Efectúe mapeamento de su carpeta actual con la carpeta /root del container python # docker run -it -v $PWD:/root python /bin/bash Crie un archivo en la carpeta /root del container, despues salia del container y verifique se este archivo está en el host

Slide 36

Slide 36 text

docker volumes Parámetro Explicación Create --name Crea un volume Inspect Inspeccionar el volume ls Lista los volumes existentes rm Remove el volume

Slide 37

Slide 37 text

Crea un volume y efectúe mapeamento con a carpeta /root del container python # docker volume create --name test # docker run -it -v test:/root python /bin/bash Crea un archivo en la carpeta /root del container, despues saia del container, crea un otro container con el mismo volume y asegure que el archivo existe # docker run -it -v teste:/root alpine /bin/sh Ejercicio

Slide 38

Slide 38 text

docker ps Parámetro Explicación -a Lista todos los containers, inclusive los desligados -l Lista los últimos containers, inclusive los desligados -n Lista los últimos N containers, inclusive los desligados -q Lista apenas los ids de los containers

Slide 39

Slide 39 text

Ejercicio Verifique los containers estan en ejecución en el momiento # docker ps

Slide 40

Slide 40 text

Outros comandos docker Explicación stop Desliga el container en ejecución start Inicia el mismo container que estaba finalizado logs -f Verifica la salida patrón del container attach Conecta a el proceso que está ejecutando

Slide 41

Slide 41 text

Ejercicio Vamos probar cada comando # docker run -itd --name testepython python # docker stop testepython # docker start testepython # docker logs -f testepython # docker attach testepython

Slide 42

Slide 42 text

docker exec Parâmetro Explicación -i Modo interactivo -t Con terminal

Slide 43

Slide 43 text

Ejercicio Vamos iniciar un container en background y enviar comandos # docker run -itd --name testealpine alpine /bin/sh # docker exec -it testealpine ls /etc

Slide 44

Slide 44 text

Dockerfile

Slide 45

Slide 45 text

Dockerfile És el documento que contiene todos los comandos que el usuário necesita para crear y ejecutar el container, pero podría escribir en terminal És una descripción de pasos para crear la imagen

Slide 46

Slide 46 text

Dockerfile Instrucciones Explicación FROM Imagen base MAINTAINER Nombre del mantenedor de la imagen COPY Copia el archivo para dentro del container RUN Ejecutar un determinado comando dentro del container CMD CMD patrón caso nada seja definido en el "docker run" ENV Especificar variable del ambiente para el container USER El usuário que será usado para ejecutar los comandos WORKDIR Cual la pasta de trabajo (cd )

Slide 47

Slide 47 text

Dockerfile El archivo es analizado de arriba para bajo, la orden es importante para usar bien el cache de Docker en este documento! FROM python:2.7 COPY . /code WORKDIR /code RUN pip install -r requirements.txt CMD python app.py

Slide 48

Slide 48 text

Hacendo el build # mkdir imagem # cd imagem # vi Dockerfile # docker build -t= . PS.: Te recuerde en el nombre de la imagen, poner ele nombre de usuário antes. Ejemplo: felipedemorais/python (mi usuário és felipedemorais).

Slide 49

Slide 49 text

Enviando para nuvem # docker login # docker push PS.: Te recuerde en el nombre de la imagen, poner ele nombre de usuário antes. Ejemplo: felipedemorais/python (mi usuário és felipedemorais).

Slide 50

Slide 50 text

Ejercicio 1)Elige una imagen para extenderse 2)Crea un Dockerfile con sus modificaciones 3)Haca el build de la imagen 4)Envie para la nube

Slide 51

Slide 51 text

Preguntas? [email protected] @felipedemorais_ Agradecimentos a @gomex.