© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Raúl Frías, Arquitecto de Soluciones
Docker en A...
Agenda
• Docker y contenedores
• Administración de Clusters
• Amazon EC2 Container Service
• Conceptos
• Demo
¿Qué es Docker?
El Problema
Diferentes grupos de
aplicaciones
Ambientes de Hardware
diferentes
¿Cómo establecer algo de
consistencia entre...
Static
website
Web
fronted
Background
workers
User DB
Analytics
DB
Queue
Develop-
ment VM
QA
Server
Single
Prod
Server
Ons...
Docker
Plataforma ligera de virtualización de contenedores
Herramientas para gestionar y ejecutar aplicaciones
Bajo la lic...
¿Qué son los contenedores?
• Virtualización del S.O.
• Aislamiento de
procesos
• Imágenes
• Automatización
Server
Guest OS...
Ventajas de los contenedores
Portable
Server
Guest OS
Bins/Libs Bins/Libs
App2App1
Ventajas de los contenedores
Flexible
Server
Guest OS
Bins/Libs Bins/Libs
App2App1
Ventajas de los contenedores
Velocidad
Server
Guest OS
Bins/Libs Bins/Libs
App2App1
Ventajas de los contenedores
Eficiente
Server
Guest OS
Bins/Libs Bins/Libs
App2App1
VMs vs. Contenedores
App A App B App C
Bins/Libs Bins/Libs Bins/Libs
Guest OS Guest OS Guest OS
Hypervisor
Host OS
Server ...
Plataforma Docker
Plataforma Docker =
Motor Docker + Docker Hub
Motor Docker + Registro
Docker daemon
Docker client
Image source - https://docs.docker.com/engine/introduction/understandi...
Docker Daemon
Corre sobre un servidor o host
Construye imágenes
Ejecuta Contenedores
Usuarios interactúan con el proceso a...
Cliente Docker
Binario, ejecutable Docker
Interfaz primaria para interactuar con Docker
Comunica ida y vuelta con el daemo...
Docker Hub
Registro basado en la nube propiedad de Docker
Librería de imágenes públicas (repositorios Oficiales)
Almacenam...
Imágen Docker
Template de solo léctura
Utilizado para ejecutar un contenedor
Union file systems para combinar
varias capas...
Administración de Clusters
Server
Guest OS
Bins/Libs Bins/Libs
App2App1
Administrar un recurso es sencillo
Server
Guest OS
Bins/Libs Bins/Libs
App2App1
Administrar un recurso es sencillo
$ docker run myimage
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Gue...
Administración de Clusters
• Monitorear capacidad
• Crecer capacidad
• Seguridad
Amazon EC2 Container
Service
Arquitectura
Administración Clusters Sencilla
• No hay software que instalar o administrar
• Gestiona el estado del cluster
• Gestiona ...
Escalable
Colocación Flexible De Contenedores
Aplicaciones
Procesos Batch
Multiples Planificadores
Diseñado para AWS
Elastic Load Balancing
Amazon Elastic Block Store
Amazon Virtual Private Cloud
AWS Identity and Access M...
Extendible
APIs Integrales
Agente CLI Open Source
Planificadores Customizados
Amazon EC2 Container
Service - Conceptos
Instancias Amazon EC2
Docker daemon
Agente Amazon ECS
Componentes clave: Instancias para
Contenedores
Regionales
Colección de recursos
Grupo de instancias para contenedores
Escalamiento dinámico
Componentes clave: Clusters
Componentes clave: definición de tareas
Volume definitions
Container definitions
Componentes clave: definición de tareas
Shared data volume
PHP app Time of day app
Definición de Tareas
{
"environment": [],
"name": "simple-demo",
"image": "my-demo",
"cpu": 10,
"memory": 500,
"portMappin...
{
"environment": [],
"name": "simple-demo",
"image": "my-demo",
"cpu": 10,
"memory": 500,
"portMappings": [
{
"containerPo...
{
"name": "busybox",
"image": "busybox",
"cpu": 10,
"memory": 500,
"volumesFrom": [
{
"sourceContainer": "simple-demo"
}
]...
Tareas
Instancia para
Contenedores
Calendarizar
Volúmen Datos Compartidos
PHP App Time of day App
Shared Data Volume
PHP A...
Unidad de trabajo
Agrupamiento de contenedores relacionados *
Corren en instancias para contenedores
Componentes clave: ta...
Componentes clave: Servicios
Para aplicaciones y
servicios que
requieran ejecutar
por tiempo
prolongado
Servicios
• Balancear tráfico entre varios contenedores
• Automáticamente recuperar instancias de fallas
• Descubrir servi...
Actualizar Servicio
• Escalar para mayor o menor capacidad
Elastic Load Balancing
Shared Data Volume
PHP App
Time of
day A...
Actualizar Servicio
• Desplegar nueva versión
• Drenar conexiones
Elastic Load Balancing
Shared Data Volume
PHP App
Time o...
Shared Data Volume
PHP App
Time of
day App
Shared Data Volume
PHP App
Time of
day App
Shared Data Volume
PHP App
Time of
d...
Shared Data Volume
PHP App
Time of
day App
Shared Data Volume
PHP App
Time of
day App
Elastic Load Balancing
Shared Data V...
Demo
¡Gracias!
Próxima SlideShare
Cargando en…5
×

Docker ECS en AWS

612 visualizaciones

Publicado el

2016 AWS Summit Bogotá - Docker ECS en AWS

Publicado en: Tecnología
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
612
En SlideShare
0
De insertados
0
Número de insertados
5
Acciones
Compartido
0
Descargas
41
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Docker ECS en AWS

  1. 1. © 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Raúl Frías, Arquitecto de Soluciones Docker en AWS
  2. 2. Agenda • Docker y contenedores • Administración de Clusters • Amazon EC2 Container Service • Conceptos • Demo
  3. 3. ¿Qué es Docker?
  4. 4. El Problema Diferentes grupos de aplicaciones Ambientes de Hardware diferentes ¿Cómo establecer algo de consistencia entre ambientes? ¿Cómo migrar de un ambiente a otro fácilmente? Static website Web fronted Background workers User DB Analytics DB Queue Develop- ment VM QA Server Single Prod Server Onsite Cluster Public Cloud Contributor’s laptop Customer Servers
  5. 5. Static website Web fronted Background workers User DB Analytics DB Queue Develop- ment VM QA Server Single Prod Server Onsite Cluster Public Cloud Contributor’s laptop Customer Servers La Solución Unidad de Entrega de SW Portátil, Ligero, Consistente Ejecutar en cualquier lugar Ejecutar cualquier cosa
  6. 6. Docker Plataforma ligera de virtualización de contenedores Herramientas para gestionar y ejecutar aplicaciones Bajo la licencia Apache 2.0 Contruido por Docker, Inc.
  7. 7. ¿Qué son los contenedores? • Virtualización del S.O. • Aislamiento de procesos • Imágenes • Automatización Server Guest OS Bins/Libs Bins/Libs App2App1
  8. 8. Ventajas de los contenedores Portable Server Guest OS Bins/Libs Bins/Libs App2App1
  9. 9. Ventajas de los contenedores Flexible Server Guest OS Bins/Libs Bins/Libs App2App1
  10. 10. Ventajas de los contenedores Velocidad Server Guest OS Bins/Libs Bins/Libs App2App1
  11. 11. Ventajas de los contenedores Eficiente Server Guest OS Bins/Libs Bins/Libs App2App1
  12. 12. VMs vs. Contenedores App A App B App C Bins/Libs Bins/Libs Bins/Libs Guest OS Guest OS Guest OS Hypervisor Host OS Server (Host) AppA AppA App B App B App C App C Bins/Libs Bin/Libs Content Manager (Docker) Host OS Server (Host) VMs Contenedores
  13. 13. Plataforma Docker
  14. 14. Plataforma Docker = Motor Docker + Docker Hub
  15. 15. Motor Docker + Registro Docker daemon Docker client Image source - https://docs.docker.com/engine/introduction/understanding-docker/ Client DOCKER_HOST Registry docker build docker run docker pull Docker daemon Containers Images
  16. 16. Docker Daemon Corre sobre un servidor o host Construye imágenes Ejecuta Contenedores Usuarios interactúan con el proceso a través del cliente Docker
  17. 17. Cliente Docker Binario, ejecutable Docker Interfaz primaria para interactuar con Docker Comunica ida y vuelta con el daemon Docker
  18. 18. Docker Hub Registro basado en la nube propiedad de Docker Librería de imágenes públicas (repositorios Oficiales) Almacenamiento para sus imágenes (repositorios públicos/privados) Contrucción automátizada de imágenes
  19. 19. Imágen Docker Template de solo léctura Utilizado para ejecutar un contenedor Union file systems para combinar varias capas en una sola imágen Imágenes construidas de una imagen base, instrucciones añaden capas superiores Instrucciones almacenadas en el Dockerfile bootfs kernel Imágen Base Imágen Imágen Contenedor Refiere a la imagen padre
  20. 20. Administración de Clusters
  21. 21. Server Guest OS Bins/Libs Bins/Libs App2App1 Administrar un recurso es sencillo
  22. 22. Server Guest OS Bins/Libs Bins/Libs App2App1 Administrar un recurso es sencillo $ docker run myimage
  23. 23. Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Server Guest OS Administrar un cluster no lo es tanto • ¿Qué instancias están disponibles? • ¿Qué recursos CPU/RAM están disponibles? • ¿Cómo saber si un contenedor muere? • ¿Cómo saber si una instancia muere? • ¿Cómo integro otros recursos como un ELB?
  24. 24. Administración de Clusters • Monitorear capacidad • Crecer capacidad • Seguridad
  25. 25. Amazon EC2 Container Service
  26. 26. Arquitectura
  27. 27. Administración Clusters Sencilla • No hay software que instalar o administrar • Gestiona el estado del cluster • Gestiona contenedores • Control y Monitoreo • Escalamiento de 1 a 1000´s de contenedores
  28. 28. Escalable
  29. 29. Colocación Flexible De Contenedores Aplicaciones Procesos Batch Multiples Planificadores
  30. 30. Diseñado para AWS Elastic Load Balancing Amazon Elastic Block Store Amazon Virtual Private Cloud AWS Identity and Access Management AWS CloudTrail
  31. 31. Extendible APIs Integrales Agente CLI Open Source Planificadores Customizados
  32. 32. Amazon EC2 Container Service - Conceptos
  33. 33. Instancias Amazon EC2 Docker daemon Agente Amazon ECS Componentes clave: Instancias para Contenedores
  34. 34. Regionales Colección de recursos Grupo de instancias para contenedores Escalamiento dinámico Componentes clave: Clusters
  35. 35. Componentes clave: definición de tareas Volume definitions Container definitions
  36. 36. Componentes clave: definición de tareas Shared data volume PHP app Time of day app
  37. 37. Definición de Tareas { "environment": [], "name": "simple-demo", "image": "my-demo", "cpu": 10, "memory": 500, "portMappings": [ { "containerPort": 80, "hostPort": 80 } ], "mountPoints": [ { "sourceVolume": "my-vol", "containerPath": "/var/www/my- vol" } ], "entryPoint": [ "/usr/sbin/apache2", "-D", "FOREGROUND" ], "essential": true }, { "name": "busybox", "image": "busybox", "cpu": 10, "memory": 500, "volumesFrom": [ { "sourceContainer": "simple-demo" } ], "entryPoint": [ "sh", "-c" ], "command": [ "/bin/sh -c "while true; do /bin/date > /var/www/my-vol/date; sleep 1; done"" ], "essential": false }
  38. 38. { "environment": [], "name": "simple-demo", "image": "my-demo", "cpu": 10, "memory": 500, "portMappings": [ { "containerPort": 80, "hostPort": 80 } ], "mountPoints": [ { "sourceVolume": "my-vol", "containerPath": "/var/www/my- vol" } ], "entryPoint": [ "/usr/sbin/apache2", "-D", "FOREGROUND" ], "essential": true }, Definición de Tareas [ { "image": "mysql", "name": "db", "cpu": 10, "memory": 500, "essential": true, "entryPoint": [ "/entrypoint.sh" ], "environment": [ { "name": "MYSQL_ROOT_PASSWORD", "value": "pass" } ], "portMappings": [] } ] Esencial para nuestra Tarea Crear y montar volúmenes Exponer puerto 80 del contenedor Al puerto 80 del host 10 Unidades de CPU (1024 100% CPU), 500 MB de memoria
  39. 39. { "name": "busybox", "image": "busybox", "cpu": 10, "memory": 500, "volumesFrom": [ { "sourceContainer": "simple-demo" } ], "entryPoint": [ "sh", "-c" ], "command": [ "/bin/sh -c "while true; do /bin/date > /var/www/my-vol/date; sleep 1; done"" ], "essential": false } [ { "image": "tutum/wordpress-stackable", "name": "wordpress", "cpu": 10, "memory": 500, "essential": true, "links": [ "db" ], "entryPoint": [ "/bin/sh", "-c" ], "environment": [ … ], "portMappings": [ { "containerPort": 80, "hostPort": 80 } ] }, ] De Docker Hub Montar volúmen de otro contenedor Comandos a ejecutar Definición de Tareas
  40. 40. Tareas Instancia para Contenedores Calendarizar Volúmen Datos Compartidos PHP App Time of day App Shared Data Volume PHP App Time of day App
  41. 41. Unidad de trabajo Agrupamiento de contenedores relacionados * Corren en instancias para contenedores Componentes clave: tareas
  42. 42. Componentes clave: Servicios Para aplicaciones y servicios que requieran ejecutar por tiempo prolongado
  43. 43. Servicios • Balancear tráfico entre varios contenedores • Automáticamente recuperar instancias de fallas • Descubrir servicios Shared Data Volume PHP App Time of day App Shared Data Volume PHP App Time of day App Shared Data Volume PHP App Time of day App Elastic Load Balancing
  44. 44. Actualizar Servicio • Escalar para mayor o menor capacidad Elastic Load Balancing Shared Data Volume PHP App Time of day App Shared Data Volume PHP App Time of day App Shared Data Volume PHP App Time of day App Shared Data Volume PHP App Time of day App
  45. 45. Actualizar Servicio • Desplegar nueva versión • Drenar conexiones Elastic Load Balancing Shared Data Volume PHP App Time of day App Shared Data Volume PHP App Time of day App Shared Data Volume PHP App Time of day App
  46. 46. Shared Data Volume PHP App Time of day App Shared Data Volume PHP App Time of day App Shared Data Volume PHP App Time of day App Elastic Load Balancing Actualizar Servicio • Desplegar nueva versión • Drenar conexiones
  47. 47. Shared Data Volume PHP App Time of day App Shared Data Volume PHP App Time of day App Elastic Load Balancing Shared Data Volume PHP App Time of day App • Desplegar nueva versión • Drenar conexiones Actualizar Servicio
  48. 48. Demo
  49. 49. ¡Gracias!

×