Docker ECS en AWS

801 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
801
En SlideShare
0
De insertados
0
Número de insertados
5
Acciones
Compartido
0
Descargas
45
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!

×