3. 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
4. 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
5. 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
6. 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
7. 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/
8. 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
9. 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 EndProcesamiento
por lotes
Usuarios de
base de datos
Análise de
base de
datos
Filas API
Endpoint
Development Test & QA Production Scale Out
10. • 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
12. • 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
13. 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.
19. 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
26. 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
32. Port mapping
# docker run -p puertahost:puertacontainer <imagen>
Docker host
Virtual Machine
Container
8080
80
192.168.99.100:80
Cliente
33. 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
34. Port mapping
# docker run -v volumehost:volumecontainer <imagen>
Docker host
Virtualbox
Container
/Users/felipe/app
Cliente /Users
/app
35. 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
36. 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
37. 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
38. 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
40. 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
45. 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
46. 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>)
47. 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
48. 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).
49. 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).
50. 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