Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Taller de Docker

Taller de Docker

Taller sobre para empezar con Docker

Felipe de Morais

September 23, 2016
Tweet

More Decks by Felipe de Morais

Other Decks in Programming

Transcript

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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/
  6. 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
  7. 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
  8. • 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
  9. • 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
  10. 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.
  11. Docker for Mac/Windows/Linux Todo que necesitamos hoy estas en este

    enlace :D • tinyurl.com/install-docker-taller 14
  12. Comandos básicos Comando Explicación docker pull <nombre de la imagen>

    Descargar imagen docker images Listar las imágenes locales docker inspect <id imagem ou container> Inspeccionar informaciones docker run <nome da imagem> Iniciar un container docker ps Listas los containers en ejecución docker exec <nome do container> <cmd> Ejecutar comandos en container
  13. Ejercicio Asegure el comando patrón de la imagen # docker

    inspect python PS.: Asegúrese el valor de "CMD"
  14. docker run <parámetros> <imagen> <CMD> 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
  15. Port mapping # docker run -p puertahost:puertacontainer <imagen> Docker host

    Virtual Machine Container 8080 80 192.168.99.100:80 Cliente
  16. 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
  17. Port mapping # docker run -v volumehost:volumecontainer <imagen> Docker host

    Virtualbox Container /Users/felipe/app Cliente /Users /app
  18. 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
  19. docker volumes <parámetros> Parámetro Explicación Create --name <nombre> Crea un

    volume Inspect <nombre> Inspeccionar el volume ls Lista los volumes existentes rm Remove el volume
  20. 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
  21. docker ps <parámetros> 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
  22. Outros comandos docker Explicación stop <id do container> Desliga el

    container en ejecución start <id do container> Inicia el mismo container que estaba finalizado logs -f <id do container> Verifica la salida patrón del container attach <id do container> Conecta a el proceso que está ejecutando
  23. Ejercicio Vamos probar cada comando # docker run -itd --name

    testepython python # docker stop testepython # docker start testepython # docker logs -f testepython # docker attach testepython
  24. Ejercicio Vamos iniciar un container en background y enviar comandos

    # docker run -itd --name testealpine alpine /bin/sh # docker exec -it testealpine ls /etc
  25. 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
  26. Dockerfile Instrucciones Explicación FROM <imagen> Imagen base MAINTAINER <Autor> Nombre

    del mantenedor de la imagen COPY <SRC> <DST> Copia el archivo para dentro del container RUN <comando> Ejecutar un determinado comando dentro del container CMD <proceso> CMD patrón caso nada seja definido en el "docker run" ENV <Variable><Valor> Especificar variable del ambiente para el container USER <usuário> El usuário que será usado para ejecutar los comandos WORKDIR <carpeta> Cual la pasta de trabajo (cd <carpeta>)
  27. 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
  28. Hacendo el build # mkdir imagem # cd imagem #

    vi Dockerfile # docker build -t=<nombre de la imagen> . PS.: Te recuerde en el nombre de la imagen, poner ele nombre de usuário antes. Ejemplo: felipedemorais/python (mi usuário és felipedemorais).
  29. Enviando para nuvem # docker login # docker push <nombre

    de la imagen> PS.: Te recuerde en el nombre de la imagen, poner ele nombre de usuário antes. Ejemplo: felipedemorais/python (mi usuário és felipedemorais).
  30. 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