SlideShare una empresa de Scribd logo
Tema III: Docker
Arquitecturas en la nube
2
Docker
• Docker
• Docker para DataScience
• Docker en cluster
• Docker Swarm
• Popularidad de docker
3
Docker
• Los contenedores son una tecnología que
ofrece unas ventajas similares a lasVMs pero
aprovechando mejor los recursos:
– Los contenedores tardan milisegundos en
arrancar
– Consumen únicamente la memoria que
necesita la app ejecutada en el contenedor.
UnaVMs reserva la memoria completa
4
Docker
• Es la tecnología de contenedores más popular, (aunque
sólo tiene 3 años)
• Es para linux, aunque dispone de herramientas para
desarrolladores en windows y mac
• Existe un repositorio de imágenes (hub) con
contenedores públicos
https://www.docker.com/
5
6
Docker
• ¿Por qué son tan eficientes los contenedores?
– Para ejecutar un contenedor no se necesita
hypervisor porque no se ejecuta un sistema
operativo invitado y no hay que simular HW
– Un contenedor es un paquete que contiene una app
y todo el sw necesario para que se ejecute (python,
Java, gcc, libs….)
– El contenedor es ejecutado directamente por el
kernel del host como si fuera una app más pero de
forma aislada del resto
7
Docker
8
Docker
MáquinasVirtuales Contenedores
Más pesadas Más ligeras
Varios procesos Un único proceso
Conexión por ssh (aunque
esté en local)
Acceso directo al
contenedor
Más seguridad porque
están más aisladas del host
Potencialmente menor
seguridad porque se
ejecutan como procesos en
el host
Principales diferencias
9
Docker
• Formato de distribución y ejecución de
servicios
– Cada sistema linux tiene su propio sistema de
distribución y ejecución de servicios
– Las apps comparten recursos del servidor sin ningún
tipo de aislamiento entre ellas
– Un servicio depende de las versiones concretas de
librerías instaladas (problemas de compatibilidad)
– Los contenedores se pueden ver como un estádar
empaquetado y ejecución de servicios en linux
10
Docker
• Formato de distribución y ejecución de servicios
11
Docker
• Docker es mucho más que contenedores:
herramientas, servicios...
12
Docker
• La empresa Docker Inc. ofrece muchos servicios y
herramientas relacionados con Docker
13
Docker
• Ejecución de contenedores
– Linux
●
Tecnología muy madura
●
Disponible en cualquier distribución linux
– Windows
●
Tecnología preliminar (publicado hace un mes)
●
Disponible en la última versión deWindows Server
– Una imagen linux no se puede ejecutar en windows
(ni viceversa)
14
Docker
• Desarrollo con contenedores
– Linux: Se usan contenedores de forma nativa
– Windows y Mac:
●
Se utiliza un linux virtualizado
●
Existen dos versiones:
– DockerToolbox: basada en VirtualBox
– Docker for windows o mac: Mucho más integrada
en el sistema), pero sólo funciona en versiones muy
recientes
https://docs.docker.com/engine/installation/
15
Docker
• Conceptos básicos docker
16
Docker
• Conceptos básicos docker
– Docker Engine:
●
Servicio que permite la gestión de
imágenes y contenedores
●
Se puede gestionar ese servicio usando el
comando docker o con una API REST
●
Puede gestionar docker localmente, en
una VM o en la nube
17
Docker
• Conceptos básicos docker
– Docker Image:
●
Plantilla básica para un contenedor
●
Normalmente contiene el SO (ubuntu),
libs (Java) y la app (webapp.jar)
●
Se utiliza para ejecutar un contenedor
●
Hay muchas imágenes en el Docker Hub
https://hub.docker.com/
18
Docker
• Conceptos básicos docker
– Docker Container:
●
Se crea partiendo desde una imagen
●
Es el equivalente a una VM
●
Cuando se escriben o modifican ficheros
en el contenedor, no se modifica la
imagen original, se modifica el
contenedor
19
Docker
• Conceptos básicos docker
– Docker Container:
●
Un contenedor se pueden iniciar, parar, mover
y borrar
●
Cuando se reanuda la ejecución, se conservan
los cambios (en disco) de la ejecución anterior
●
No se pueden pausar y mantener la memoria
(como si se hace en lasVMs)
20
Docker
• Conceptos básicos docker
– Docker Container:
●
Contenedores para servicios: Se ejecutan
constantemente y puede tener sentido detener
y reanudar después
●
Contenedores para comandos: Se ejecutan
para ejecutar un comando y los resultados del
comando se guardan en el host. Se borran al
finalizar la ejecución
21
Docker
• Conceptos básicos docker
– Docker Container:
●
Contenedores para servicios: Son accesibles
mediante un puerto (en una IP local o
directamente en localhost)
●
Contenedores para comandos: Obtienen
ficheros del host, los procesan y el resultado
queda en el host
22
Docker
• Conceptos básicos docker
– Docker Container:
●
A diferencia de lasVMs, los contenedores no
ocupan apenas espacio en disco porque no se
copia la imagen por cada contenedor
●
Se lee directamente desde la imagen y sólo se
guardan los nuevos ficheros o las
modificaciones que se hacen sobre la imagen
●
Esto se consigue gracias al union-file-system
23
Docker
• Conceptos básicos docker
– Docker Registry:
●
Repositorio de imágenes Docker
●
Las imágenes se guardan en repositorios
●
Se pueden tener repositorios públicos o
privados
●
El registro público es Docker Hub. Cualquiera
puede hacerse una cuenta y subir imágenes.
●
Se puede instalar un registro privado
24
Docker
• Practicando con Docker
– Para experimentar con docker vamos a seguir un
tutorial oficial
●
https://github.com/docker/labs/tree/master/beginner
– Otros tutoriales oficiales más avanzados
●
https://docs.docker.com/engine/tutorials/dockerizing/
●
https://docs.docker.com/engine/tutorials/usingdocker/
●
https://docs.docker.com/engine/tutorials/dockerimages/
●
https://docs.docker.com/engine/tutorials/networkingcontainers/
●
https://docs.docker.com/engine/tutorials/dockervolumes/
●
https://docs.docker.com/engine/tutorials/dockerrepos/
25
Docker
• Practicando con Docker
Para información de referencia se puede
consultar la documentación oficial
●
https://docs.docker.com/
26
Docker
• Referencias y páginas de interés
– Tutorial básico castellano
●
https://www.adictosaltrabajo.com/tutoriales/d
ocker-for-dummies/
– Página resumen
●
https://github.com/wsargent/docker-cheat-s
heet/blob/master/README.md
27
Docker
• Docker
• Docker para DataScience
• Docker en cluster
• Docker Swarm
• Popularidad de docker
28
Docker para Data Science
• Docker tiene las siguientes ventajas para los
desarrolladores en Data Science:
– Te permite tener en un entorno local todo el
software necesario (Cloudera, prediction.io...)
para el procesamiento de datos de forma sencilla
– Te permite empaquetar tu aplicación con todo lo
necesario para que se pueda ejecutar sin
problemas en servidores
29
Docker para Data Science
• Horton + Red Sqirl
https://redsqirl.com/
30
Docker para Data Science
• Hortonworks + Red Sqirl
– Execute the script: /usr/local/bin/create_cluster.sh
– When it says installation complete, type: Ctrl-Z bg then
Ctrl-L or clear
– Wait that hadoop is online, it could take several minutes,
the command hadoop fs -ls / should execute.While
everything is being installed you will get "command not
found" then "ConnectionRefused" errors.
– Puertos: Ambari 8080,Yarn 8088
https://hub.docker.com/r/redsqirl/hortonworks-hdp/
docker run ­i ­t ­p 8842:8842 ­p 8080:8080 ­p 8088:8088 
    redsqirl/hortonworks­hdp /usr/local/bin/bootstrap.sh
31
Docker para Data Science
• Cloudera en Docker
– Cloudera tiene una imagen oficial para
probar en local
– No se recomienda para producción
https://www.youtube.com/watch?v=lq6Yr6i33i8
32
Docker para Data Science
• Cloudera en Docker
– La imagen de cloudera incluye la
distribución open-source con CDH y
Cloudera Manager
– Se puede descargar la imagen con
– Ocupa 4.4Gbytes, así que paciencia
descargando
https://www.cloudera.com/documentation/enterprise/5-6-x/topics/quickstart_docker_container.html
docker pull cloudera/quickstart:latest
33
Docker para Data Science
• Cloudera en Docker
– Se puede ejecutar cloudera con el siguiente
comando
– Inicia todos los servicios CDH y arranca una
shell dentro del contenedor
https://www.cloudera.com/documentation/enterprise/5-6-x/topics/quickstart_docker_container.html
docker run --hostname=quickstart.cloudera --privileged=true 
-t -i -p 8888:8888 -p 80:80 
--name cloudera cloudera/quickstart 
/usr/bin/docker-quickstart
34
Docker para Data Science
• Cloudera en Docker
https://www.cloudera.com/documentation/enterprise/5-6-x/topics/quickstart_docker_container.html
35
Docker para Data Science
Con Docker Toolbox hay que cambiar 127.0.0.1 por la IP de la máquina virtual. Además, hay que
abrir los puertos en Virtualbox en “Settings > Network > Advanced > Port Forwarding”
http://127.0.0.1/
36
Docker para Data Science
http://127.0.0.1:8888
User: cloudera
Pass: cloudera
Con Docker Toolbox hay que cambiar 127.0.0.1 por la IP de la máquina virtual. Además, hay que
abrir los puertos en Virtualbox en “Settings > Network > Advanced > Port Forwarding”
37
Docker para Data Science
Con Docker Toolbox hay que cambiar 127.0.0.1 por la IP de la máquina virtual. Además, hay que
abrir los puertos en Virtualbox en “Settings > Network > Advanced > Port Forwarding”
38
Docker para Data Science
• Cloudera en Docker
– Parar el contenedor:
●
exit en el contenedor
●
docker stop cloudera en el host
– Salir de la shell sin parar el contenedor: Ctrl+p
seguido de Ctrl+q en el contenedor
– Borrar el contenedor (una vez parado): docker rm
cloudera en el host
https://www.cloudera.com/documentation/enterprise/5-6-x/topics/quickstart_docker_container.html
39
Docker para Data Science
• Prediction.io en Docker
– Apache Prediction.io es un servidor de machine
learning open source
http://predictionio.incubator.apache.org/
40
Docker para Data Science
• Prediction.io en Docker
– Este contenedor incluye Apache Spark, HBase and
Elasticsearch
– Iniciar contenedor
– Luego arrancar los servicios
https://github.com/sphereio/docker-predictionio
docker run -it -v $HOME/MyEngine:/MyEngine -p 8000:8000 
sphereio/predictionio /bin/bash
pio-start-all
pio status
41
Docker
• Docker
• Docker para DataScience
• Docker en cluster
• Docker Swarm
• Popularidad de docker
42
Docker en cluster
• Servicios y contenedores
– Un contenedor con todos los servicios: Una
aplicación se puede empaquetar como una
imagen docker con todos los servicios incluidos
(web, BBDD, caché, etc…).
– Un contenedor por servicio:También puede
empaquetarse como muchas imágenes diferentes.
Al arrancar habrá varios contenedores
comunicados entre sí por red
43
Docker en cluster
• Un contenedor con todos los servicios
– Ventajas
●
Más fácil de crear y probar (sólo un Dockerfile)
●
La comunicación de los servicios es siempre por
localhost (más sencilla)
●
Se descarga de forma automática con un comando
(ideal para distribuir)
44
Docker en cluster
• Un contenedor con todos los servicios
– Desventajas
●
Un contenedor sólo puede escalar verticalmente
(con una máquina más potente), pero no
horizontalmente (usando varias máquinas)
●
No es tolerante a fallos (un error en un servicio
afecta a todos los demás)
45
Docker en cluster
• Un contenedor por servicio
– Ventajas
●
Las aplicaciones pueden escalar horizontalmente
en un cluster
●
Cada contenedor puede estar en una máquina
diferente
●
Se pueden clonar servicios que necesitan más
potencia de cómputo en varias máquinas (web,
servicios statless)
●
Es tolerante a fallos (un servicio se cae y se puede
reiniciar)
46
Docker en cluster
• Un contenedor por servicio
– Desventajas
●
Puede ser más difícil de crear si tu código está en varios
contenedores
●
Para webs sencillas se puede tener un contenedor para
la BBDD y otros para la web (o varios)
●
Existen muchas formas diferentes de gestionar una
aplicación formada por varios servicios
– Una sola máquina: docker-compose
– Cluster: orquestadores de contendores
●
Muchas formas de distribución del “conjunto”
47
Docker en cluster
• Orquestadores de contenedores
– Software encargado de gestionar la ejecución de
contenedores en un cluster de máquinas
– Pueden tratar varios contenedores como una
única unidad lógica (aplicación)
– Redes aisladas para contenedores de la misma
app
– Políticas de reinicio en caso de caída del servicio
– Políticas de replicación de contenedores por carga
48
Docker en cluster
• Orquestadores de contenedores
http://kubernetes.io/ http://mesos.apache.org/https://docs.docker.com/engine/swarm/
49
Docker en cluster
• Docker Swarm
– Orquestador oficial del creador de Docker
– Un poco inmaduro: Publicado en Julio de 2016
– Posibilidad de gestionar clusters de máquinas
virtuales en AWS y Azure
– Conceptos y comandos similares en local y en el
cluster
https://docs.docker.com/engine/swarm/
50
Docker en cluster
• Docker Swarm
Docker en un servidor Docker en un cluster
51
Docker en cluster
• Kubernetes
– Desarrollado principalmente por Google basado
en sus sistemas internos de orquestación (Borg)
– Muy maduro. El más utilizado y con más futuro
– Disponible de forma sencilla en Google Cloud
Platform y se puede instalar en local, AWS, etc
– Conceptos y comandos diferentes a docker en
local
http://kubernetes.io/
https://www.cncf.io/
52
Docker en cluster
• Kubernetes
53
Docker en cluster
• Apache Mesos
– Desarrollado en la fundación Apache
– Se usa sobre todo como una plataforma para
gestionar las máquinas del cluster como una
unidad
– Permite ejecutar Hadoop, Kafka, Spark en el
mismo cluster y también contenedores
– Cada vez se parece más a kubernetes
http://mesos.apache.org/
54
Docker en cluster
• Existen diversas formas de ejecutar
contenedores en un proveedor cloud
– Ejecución manual de contenedores en una
VM (IaaS)
– Instalación de un orquestador de
contenedores en un cluster deVms
– Uso de servicios de orquestación ofrecidos
por el proveedor cloud
55
Docker en cluster
• Instalación de un orquestador de contenedores
en un cluster deVMs
– Kubernetes
●
Se puede instalar en AWS y Azure
●
Se ofrece como servicio en Google Cloud
– Docker Swarm
●
Se podrá instalar de forma sencilla en AWS y Azure
(todavía en beta)
https://blog.docker.com/2016/06/azure-aws-beta/
http://kubernetes.io/docs/getting-started-guides/aws/
http://kubernetes.io/docs/getting-started-guides/azure/
56
Docker en cluster
• Muchos proveedores PaaS están ofreciendo la
posibilidad de ejecutar la app como un
contenedor docker
Amazon EC2
Container Service
(ECS)
Google Container
Engine (GKE)
Orquestación propietaria
Basadas en kubernetes
57
Docker
• Docker
• Docker para DataScience
• Docker en cluster
• Docker Swarm
• Popularidad de docker
58
• Sólo está disponible en la versión linux (1.12) o
en Docker forWindows o Docker for Mac
• No está disponible en DockerToolbox
Docker Swarm
Worker Nodes
Manager Nodes
59
• Los hosts con el servicio de docker (Docker Engine)
que participan en un cluster swarm se dice que corren
en modo swarm
• Swarm es un cluster de máquinas corriendo Docker
Engine
• Sobre este cluster se pueden desplegar servicios
• Cuando se utiliza Docker Engine sin swarm, se
ejecutan comandos Docker
• Cuando se utiliza Docker Engine en modo swarm, se
orquestan servicios
Docker Swarm
60
• Estructura de un cluster
– Node
●
host corriendo Docker Engine en modo swarm
– Manager node
●
Nodos del swarm que reciben descripciones de servicios y
eligen cómo desplegarlos en el cluster (dispatching)
●
El dispatching se realiza enviando unidades de tareas a los
worker nodes
●
Entre todos los manager nodes se elige a un líder,
encargado de la orquestación
●
Responsables de mantener los servicios funcionando
Docker Swarm
61
• Estructura de un cluster
– Worker node
●
Reciben las tareas de los manager nodes
●
Notifican a los manager nodes de cambios en las tareas del
worker node
– Managers como workers
●
Por defecto los manager nodes son también worker
nodes, pero podrían dejarse exclusivamente como
manager nodes
Docker Swarm
62
• Servicios
 Definición de las tareas a ejecutar en los worker nodes
 Principal medio de interacción con el cluster por parte
del usuario
 Cuando se crea un servicio se especifican
 Imágenes docker a utilizar
 Comandos a ejecutar dentro de dichas imágenes
Docker Swarm
63
• Tipos de servicios
 Servicios simples: definen un conjunto de tareas que se
ejecutarán en los worker nodes determinados por el
orquestador
 Servicios replicados: el orquestador debe garantizar
que las tareas del servicio están replicadas el número de
veces especificado
 Servicios globales: el orquestador debe garantizar que
cada tarea del servicio se está ejecutando en cada
worker node del cluster
Docker Swarm
64
• Tipos de servicios
Docker Swarm
65
• Tareas
– Son la unidad mínima en swarm
– Formada por
●
Imagen docker
●
Comandos a ejecutar dentro del contenedor
– Una vez que una tarea se asigna a un worker node, no
se puede mover
●
O el contenedor se ejecuta o falla
●
Si falla, la tarea podría ser asignada a otro worker node
Docker Swarm
66
• Tareas
Docker Swarm
67
• Balanceo de carga
 Los servicios se pueden exponer hacia el exterior
 Swarm puede utilizar un puerto por defecto (Published
Port)
 El usuario puede escoger un puerto determinado en el
rango 30,000-32,767
 Swarm utiliza ingress load balancing para dirigir el
tráfico hacia el contenedor
 Cualquier nodo del cluster puede recibir peticiones
(aunque no esté ejecutando el servicio)
 Todos dirigirán las peticiones hacia los nodos que tengan
la tarea
Docker Swarm
68
• Creación de un docker Swarm en un cluster
– Se instala docker en cada nodo del cluster
– En un nodo se ejecuta el comando
– Salida:
– Los demás nodos se pueden añadir como workers o
como managers
To add a worker to this swarm, run the following command: 
    docker swarm join  
        ­­token SWMTKN­1­49nj1xv8rssmk743ojnwacrr2e7c  
        192.168.99.100:2377 
Docker Swarm
docker swarm init
69
• Desplegar un servicio
 Ejecutar el comando:
 Comprobar que está corriendo con el comando:
Docker Swarm
docker service create ­­replicas 1 
   ­­name helloworld alpine ping docker.com
docker service ls
70
• Controlar el servicio
 Inspeccionar el servicio:
Docker Swarm
docker service inspect ­­pretty helloworld
ID:            9uk4639qpg7npwf3fn2aasksr 
Name:          helloworld 
Mode:          Replicated 
  Replicas:    1 
Placement: 
UpdateConfig: 
  Parallelism: 1 
  On failure:  pause
ContainerSpec: 
  Image:       alpine 
  Args:        ping docker.com 
71
• Controlar el servicio
 Dónde se ejecuta:
Docker Swarm
docker service ps helloworld
ID                         NAME          IMAGE   NODE           DESIRED STATE  CURRENT STATE           ERROR
7l2sro6xvka2xwdwddk56q4d7  helloworld.1  alpine  mica­portatil  Running        Running 12 minutes ago
72
• Controlar el servicio
 Para tener un control más preciso del servicio hay
que conectarse al nodo donde está el servicio y
ejecutar el comando:
Docker Swarm
docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS          PORTS  NAMES
eedc91eea3a0        alpine:latest       "ping docker.com"   15 minutes ago      Up 15 minutes 
73
• Escalar el servicio
 Podemos replicar los contenedores por el cluster
Docker Swarm
docker service scale helloworld=4
ID                         NAME          IMAGE   NODE           DESIRED STATE  CURRENT STATE           
ERROR
7l2sro6xvka2xwdwddk56q4d7  helloworld.1  alpine  mica­portatil  Running        Running 17 minutes ago  
ce51o29ahtf5x0livwe9jk9xp  helloworld.2  alpine  mica­portatil  Running        Running 3 seconds ago   
ch9muwzzfwffwzd1jss9fto4f  helloworld.3  alpine  mica­portatil  Running        Running 3 seconds ago   
a6qsw3rb05pmaudwvb6ate0af  helloworld.4  alpine  mica­portatil  Running        Running 3 seconds ago   
docker service ps helloworld
74
• Eliminar el servicio
 Comando
Docker Swarm
docker service rm helloworld
75
• Servicio con puertos públicos
 Comando
 Abrir en el browser
Docker Swarm
docker service create ­­name web 
    ­­replicas 3 ­­publish 9999:80 nginx
http://127.0.0.1:9999/
76
• Docker compose y swarm
 Servicios multicontenedor definidos con docker
compose se pueden desplegar en un cluster swarm
 Documentación
Docker Swarm
https://docs.docker.com/compose/swarm/
77
Docker
• Docker
• Docker para DataScience
• Docker en cluster
• Docker Swarm
• Popularidad de docker
78
79
Popularidad de docker
https://www.docker.com/survey-2016
80
Popularidad de docker
https://www.docker.com/survey-2016
81
Popularidad de docker
https://www.docker.com/survey-2016
82
Popularidad de docker
https://www.docker.com/survey-2016
83
Popularidad de docker
https://www.docker.com/survey-2016

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
 
DevOps+[Chef/Docker]
 DevOps+[Chef/Docker] DevOps+[Chef/Docker]
DevOps+[Chef/Docker]
 
Modelos de Concurrencia
Modelos de ConcurrenciaModelos de Concurrencia
Modelos de Concurrencia
 
Solapas principales Ver(solapa activa) Editar Gestionar present...
 Solapas principales      Ver(solapa activa)     Editar     Gestionar present... Solapas principales      Ver(solapa activa)     Editar     Gestionar present...
Solapas principales Ver(solapa activa) Editar Gestionar present...
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de uso
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualización
 
nerdear.la 2016 - Docker workshop
nerdear.la 2016 - Docker workshopnerdear.la 2016 - Docker workshop
nerdear.la 2016 - Docker workshop
 
Node para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigoNode para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigo
 
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
 
introducción a Docker
introducción a Dockerintroducción a Docker
introducción a Docker
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
Jenkins pipeline
Jenkins pipelineJenkins pipeline
Jenkins pipeline
 
Docker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en Restorando
 
Kubernetes: Caso de uso real con mememtum y Taniwa
Kubernetes: Caso de uso real con mememtum y TaniwaKubernetes: Caso de uso real con mememtum y Taniwa
Kubernetes: Caso de uso real con mememtum y Taniwa
 
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)
 
Un recorrido por las herramientas de software libre que uso cada día, en los ...
Un recorrido por las herramientas de software libre que uso cada día, en los ...Un recorrido por las herramientas de software libre que uso cada día, en los ...
Un recorrido por las herramientas de software libre que uso cada día, en los ...
 

Destacado

Destacado (13)

La priorización de historias de usuario (versión reducida)
La priorización de historias de usuario (versión reducida)La priorización de historias de usuario (versión reducida)
La priorización de historias de usuario (versión reducida)
 
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaTypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
 
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
 
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browserTypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
 
El mundo real en el aula, con la ayuda del profesor
El mundo real en el aula, con la ayuda del profesorEl mundo real en el aula, con la ayuda del profesor
El mundo real en el aula, con la ayuda del profesor
 
Tema 1: ¿Qué es la web? (Desarrollo Aplicaciones Web)
Tema 1: ¿Qué es la web? (Desarrollo Aplicaciones Web)Tema 1: ¿Qué es la web? (Desarrollo Aplicaciones Web)
Tema 1: ¿Qué es la web? (Desarrollo Aplicaciones Web)
 
TypeScript - Angular 2 - ionic 2
TypeScript - Angular 2 - ionic 2TypeScript - Angular 2 - ionic 2
TypeScript - Angular 2 - ionic 2
 
La priorización de historias de usuario (versión ampliada)
La priorización de historias de usuario (versión ampliada)La priorización de historias de usuario (versión ampliada)
La priorización de historias de usuario (versión ampliada)
 
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e IonicDesarrollo web front-end con TypeScript, Angular 2 e Ionic
Desarrollo web front-end con TypeScript, Angular 2 e Ionic
 
GRASP con PR para el SRFLP en el MAEB 2016
GRASP con PR para el SRFLP en el MAEB 2016GRASP con PR para el SRFLP en el MAEB 2016
GRASP con PR para el SRFLP en el MAEB 2016
 
Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016
 
Using Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and JenkinsUsing Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and Jenkins
 
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
 

Similar a Docker para Data Scientist - Master en Data Science URJC

Similar a Docker para Data Scientist - Master en Data Science URJC (20)

Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetes
 
Curso gratuito de Docker
Curso gratuito de DockerCurso gratuito de Docker
Curso gratuito de Docker
 
Introduction to docker. Stratio
Introduction to docker. StratioIntroduction to docker. Stratio
Introduction to docker. Stratio
 
Instalacion y uso basico de Docker.
Instalacion y uso basico de Docker.Instalacion y uso basico de Docker.
Instalacion y uso basico de Docker.
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacion
 
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018
Creacion y Administracion de servicios usando Docker - .Net Conf Mx 2018
 
TECNIRIS47-1b.pdf
TECNIRIS47-1b.pdfTECNIRIS47-1b.pdf
TECNIRIS47-1b.pdf
 
Jug málaga docker 101 - final
Jug málaga   docker 101 - finalJug málaga   docker 101 - final
Jug málaga docker 101 - final
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 
DockerCon 2022 Spanish Room-ONBOARDING.pdf
DockerCon 2022 Spanish Room-ONBOARDING.pdfDockerCon 2022 Spanish Room-ONBOARDING.pdf
DockerCon 2022 Spanish Room-ONBOARDING.pdf
 
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019 Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker Ecosystem
 
Seminario CLEFormacion-docker
Seminario CLEFormacion-dockerSeminario CLEFormacion-docker
Seminario CLEFormacion-docker
 
Dockerparadesarrollo
DockerparadesarrolloDockerparadesarrollo
Dockerparadesarrollo
 
Docker para Dummies
Docker para DummiesDocker para Dummies
Docker para Dummies
 
Taller girona
Taller gironaTaller girona
Taller girona
 
Docker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 Huancayo
 
Workshop docker: Iniciando en el Mundo de los Contenedores
Workshop docker: Iniciando en el Mundo de los ContenedoresWorkshop docker: Iniciando en el Mundo de los Contenedores
Workshop docker: Iniciando en el Mundo de los Contenedores
 
Iniciando con containers en azure
Iniciando con containers en azureIniciando con containers en azure
Iniciando con containers en azure
 
Docker and networking
Docker and networkingDocker and networking
Docker and networking
 

Más de Micael Gallego

Más de Micael Gallego (9)

La evaluación con realimentación y posibilidad de recuperación para evitar el...
La evaluación con realimentación y posibilidad de recuperación para evitar el...La evaluación con realimentación y posibilidad de recuperación para evitar el...
La evaluación con realimentación y posibilidad de recuperación para evitar el...
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Testing cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestTesting cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTest
 
Introducción a las Pruebas Software
Introducción a las Pruebas SoftwareIntroducción a las Pruebas Software
Introducción a las Pruebas Software
 
Testing fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornosTesting fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornos
 
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
 
Como ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicacionesComo ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicaciones
 
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
TypeScript: Un lenguaje aburrido para programadores torpes y tristesTypeScript: Un lenguaje aburrido para programadores torpes y tristes
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
 
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
 

Último

Último (8)

Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
 
Virus informático (tipos y opciones para prevenir)
Virus informático (tipos y opciones para prevenir)Virus informático (tipos y opciones para prevenir)
Virus informático (tipos y opciones para prevenir)
 
Tkinter para python (curso de interfaces gráficas)
Tkinter para python (curso de interfaces gráficas)Tkinter para python (curso de interfaces gráficas)
Tkinter para python (curso de interfaces gráficas)
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
 
MODULO BASICO DE WORD - I CICLO.DOC.DOC.
MODULO BASICO DE WORD - I CICLO.DOC.DOC.MODULO BASICO DE WORD - I CICLO.DOC.DOC.
MODULO BASICO DE WORD - I CICLO.DOC.DOC.
 
LA CALIDAD DE LA INFORMACION EN LA NUEVA ERA DEL INTERNET
LA CALIDAD DE LA INFORMACION  EN LA NUEVA ERA DEL INTERNETLA CALIDAD DE LA INFORMACION  EN LA NUEVA ERA DEL INTERNET
LA CALIDAD DE LA INFORMACION EN LA NUEVA ERA DEL INTERNET
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
 

Docker para Data Scientist - Master en Data Science URJC

  • 2. 2 Docker • Docker • Docker para DataScience • Docker en cluster • Docker Swarm • Popularidad de docker
  • 3. 3 Docker • Los contenedores son una tecnología que ofrece unas ventajas similares a lasVMs pero aprovechando mejor los recursos: – Los contenedores tardan milisegundos en arrancar – Consumen únicamente la memoria que necesita la app ejecutada en el contenedor. UnaVMs reserva la memoria completa
  • 4. 4 Docker • Es la tecnología de contenedores más popular, (aunque sólo tiene 3 años) • Es para linux, aunque dispone de herramientas para desarrolladores en windows y mac • Existe un repositorio de imágenes (hub) con contenedores públicos https://www.docker.com/
  • 5. 5
  • 6. 6 Docker • ¿Por qué son tan eficientes los contenedores? – Para ejecutar un contenedor no se necesita hypervisor porque no se ejecuta un sistema operativo invitado y no hay que simular HW – Un contenedor es un paquete que contiene una app y todo el sw necesario para que se ejecute (python, Java, gcc, libs….) – El contenedor es ejecutado directamente por el kernel del host como si fuera una app más pero de forma aislada del resto
  • 8. 8 Docker MáquinasVirtuales Contenedores Más pesadas Más ligeras Varios procesos Un único proceso Conexión por ssh (aunque esté en local) Acceso directo al contenedor Más seguridad porque están más aisladas del host Potencialmente menor seguridad porque se ejecutan como procesos en el host Principales diferencias
  • 9. 9 Docker • Formato de distribución y ejecución de servicios – Cada sistema linux tiene su propio sistema de distribución y ejecución de servicios – Las apps comparten recursos del servidor sin ningún tipo de aislamiento entre ellas – Un servicio depende de las versiones concretas de librerías instaladas (problemas de compatibilidad) – Los contenedores se pueden ver como un estádar empaquetado y ejecución de servicios en linux
  • 10. 10 Docker • Formato de distribución y ejecución de servicios
  • 11. 11 Docker • Docker es mucho más que contenedores: herramientas, servicios...
  • 12. 12 Docker • La empresa Docker Inc. ofrece muchos servicios y herramientas relacionados con Docker
  • 13. 13 Docker • Ejecución de contenedores – Linux ● Tecnología muy madura ● Disponible en cualquier distribución linux – Windows ● Tecnología preliminar (publicado hace un mes) ● Disponible en la última versión deWindows Server – Una imagen linux no se puede ejecutar en windows (ni viceversa)
  • 14. 14 Docker • Desarrollo con contenedores – Linux: Se usan contenedores de forma nativa – Windows y Mac: ● Se utiliza un linux virtualizado ● Existen dos versiones: – DockerToolbox: basada en VirtualBox – Docker for windows o mac: Mucho más integrada en el sistema), pero sólo funciona en versiones muy recientes https://docs.docker.com/engine/installation/
  • 16. 16 Docker • Conceptos básicos docker – Docker Engine: ● Servicio que permite la gestión de imágenes y contenedores ● Se puede gestionar ese servicio usando el comando docker o con una API REST ● Puede gestionar docker localmente, en una VM o en la nube
  • 17. 17 Docker • Conceptos básicos docker – Docker Image: ● Plantilla básica para un contenedor ● Normalmente contiene el SO (ubuntu), libs (Java) y la app (webapp.jar) ● Se utiliza para ejecutar un contenedor ● Hay muchas imágenes en el Docker Hub https://hub.docker.com/
  • 18. 18 Docker • Conceptos básicos docker – Docker Container: ● Se crea partiendo desde una imagen ● Es el equivalente a una VM ● Cuando se escriben o modifican ficheros en el contenedor, no se modifica la imagen original, se modifica el contenedor
  • 19. 19 Docker • Conceptos básicos docker – Docker Container: ● Un contenedor se pueden iniciar, parar, mover y borrar ● Cuando se reanuda la ejecución, se conservan los cambios (en disco) de la ejecución anterior ● No se pueden pausar y mantener la memoria (como si se hace en lasVMs)
  • 20. 20 Docker • Conceptos básicos docker – Docker Container: ● Contenedores para servicios: Se ejecutan constantemente y puede tener sentido detener y reanudar después ● Contenedores para comandos: Se ejecutan para ejecutar un comando y los resultados del comando se guardan en el host. Se borran al finalizar la ejecución
  • 21. 21 Docker • Conceptos básicos docker – Docker Container: ● Contenedores para servicios: Son accesibles mediante un puerto (en una IP local o directamente en localhost) ● Contenedores para comandos: Obtienen ficheros del host, los procesan y el resultado queda en el host
  • 22. 22 Docker • Conceptos básicos docker – Docker Container: ● A diferencia de lasVMs, los contenedores no ocupan apenas espacio en disco porque no se copia la imagen por cada contenedor ● Se lee directamente desde la imagen y sólo se guardan los nuevos ficheros o las modificaciones que se hacen sobre la imagen ● Esto se consigue gracias al union-file-system
  • 23. 23 Docker • Conceptos básicos docker – Docker Registry: ● Repositorio de imágenes Docker ● Las imágenes se guardan en repositorios ● Se pueden tener repositorios públicos o privados ● El registro público es Docker Hub. Cualquiera puede hacerse una cuenta y subir imágenes. ● Se puede instalar un registro privado
  • 24. 24 Docker • Practicando con Docker – Para experimentar con docker vamos a seguir un tutorial oficial ● https://github.com/docker/labs/tree/master/beginner – Otros tutoriales oficiales más avanzados ● https://docs.docker.com/engine/tutorials/dockerizing/ ● https://docs.docker.com/engine/tutorials/usingdocker/ ● https://docs.docker.com/engine/tutorials/dockerimages/ ● https://docs.docker.com/engine/tutorials/networkingcontainers/ ● https://docs.docker.com/engine/tutorials/dockervolumes/ ● https://docs.docker.com/engine/tutorials/dockerrepos/
  • 25. 25 Docker • Practicando con Docker Para información de referencia se puede consultar la documentación oficial ● https://docs.docker.com/
  • 26. 26 Docker • Referencias y páginas de interés – Tutorial básico castellano ● https://www.adictosaltrabajo.com/tutoriales/d ocker-for-dummies/ – Página resumen ● https://github.com/wsargent/docker-cheat-s heet/blob/master/README.md
  • 27. 27 Docker • Docker • Docker para DataScience • Docker en cluster • Docker Swarm • Popularidad de docker
  • 28. 28 Docker para Data Science • Docker tiene las siguientes ventajas para los desarrolladores en Data Science: – Te permite tener en un entorno local todo el software necesario (Cloudera, prediction.io...) para el procesamiento de datos de forma sencilla – Te permite empaquetar tu aplicación con todo lo necesario para que se pueda ejecutar sin problemas en servidores
  • 29. 29 Docker para Data Science • Horton + Red Sqirl https://redsqirl.com/
  • 30. 30 Docker para Data Science • Hortonworks + Red Sqirl – Execute the script: /usr/local/bin/create_cluster.sh – When it says installation complete, type: Ctrl-Z bg then Ctrl-L or clear – Wait that hadoop is online, it could take several minutes, the command hadoop fs -ls / should execute.While everything is being installed you will get "command not found" then "ConnectionRefused" errors. – Puertos: Ambari 8080,Yarn 8088 https://hub.docker.com/r/redsqirl/hortonworks-hdp/ docker run ­i ­t ­p 8842:8842 ­p 8080:8080 ­p 8088:8088      redsqirl/hortonworks­hdp /usr/local/bin/bootstrap.sh
  • 31. 31 Docker para Data Science • Cloudera en Docker – Cloudera tiene una imagen oficial para probar en local – No se recomienda para producción https://www.youtube.com/watch?v=lq6Yr6i33i8
  • 32. 32 Docker para Data Science • Cloudera en Docker – La imagen de cloudera incluye la distribución open-source con CDH y Cloudera Manager – Se puede descargar la imagen con – Ocupa 4.4Gbytes, así que paciencia descargando https://www.cloudera.com/documentation/enterprise/5-6-x/topics/quickstart_docker_container.html docker pull cloudera/quickstart:latest
  • 33. 33 Docker para Data Science • Cloudera en Docker – Se puede ejecutar cloudera con el siguiente comando – Inicia todos los servicios CDH y arranca una shell dentro del contenedor https://www.cloudera.com/documentation/enterprise/5-6-x/topics/quickstart_docker_container.html docker run --hostname=quickstart.cloudera --privileged=true -t -i -p 8888:8888 -p 80:80 --name cloudera cloudera/quickstart /usr/bin/docker-quickstart
  • 34. 34 Docker para Data Science • Cloudera en Docker https://www.cloudera.com/documentation/enterprise/5-6-x/topics/quickstart_docker_container.html
  • 35. 35 Docker para Data Science Con Docker Toolbox hay que cambiar 127.0.0.1 por la IP de la máquina virtual. Además, hay que abrir los puertos en Virtualbox en “Settings > Network > Advanced > Port Forwarding” http://127.0.0.1/
  • 36. 36 Docker para Data Science http://127.0.0.1:8888 User: cloudera Pass: cloudera Con Docker Toolbox hay que cambiar 127.0.0.1 por la IP de la máquina virtual. Además, hay que abrir los puertos en Virtualbox en “Settings > Network > Advanced > Port Forwarding”
  • 37. 37 Docker para Data Science Con Docker Toolbox hay que cambiar 127.0.0.1 por la IP de la máquina virtual. Además, hay que abrir los puertos en Virtualbox en “Settings > Network > Advanced > Port Forwarding”
  • 38. 38 Docker para Data Science • Cloudera en Docker – Parar el contenedor: ● exit en el contenedor ● docker stop cloudera en el host – Salir de la shell sin parar el contenedor: Ctrl+p seguido de Ctrl+q en el contenedor – Borrar el contenedor (una vez parado): docker rm cloudera en el host https://www.cloudera.com/documentation/enterprise/5-6-x/topics/quickstart_docker_container.html
  • 39. 39 Docker para Data Science • Prediction.io en Docker – Apache Prediction.io es un servidor de machine learning open source http://predictionio.incubator.apache.org/
  • 40. 40 Docker para Data Science • Prediction.io en Docker – Este contenedor incluye Apache Spark, HBase and Elasticsearch – Iniciar contenedor – Luego arrancar los servicios https://github.com/sphereio/docker-predictionio docker run -it -v $HOME/MyEngine:/MyEngine -p 8000:8000 sphereio/predictionio /bin/bash pio-start-all pio status
  • 41. 41 Docker • Docker • Docker para DataScience • Docker en cluster • Docker Swarm • Popularidad de docker
  • 42. 42 Docker en cluster • Servicios y contenedores – Un contenedor con todos los servicios: Una aplicación se puede empaquetar como una imagen docker con todos los servicios incluidos (web, BBDD, caché, etc…). – Un contenedor por servicio:También puede empaquetarse como muchas imágenes diferentes. Al arrancar habrá varios contenedores comunicados entre sí por red
  • 43. 43 Docker en cluster • Un contenedor con todos los servicios – Ventajas ● Más fácil de crear y probar (sólo un Dockerfile) ● La comunicación de los servicios es siempre por localhost (más sencilla) ● Se descarga de forma automática con un comando (ideal para distribuir)
  • 44. 44 Docker en cluster • Un contenedor con todos los servicios – Desventajas ● Un contenedor sólo puede escalar verticalmente (con una máquina más potente), pero no horizontalmente (usando varias máquinas) ● No es tolerante a fallos (un error en un servicio afecta a todos los demás)
  • 45. 45 Docker en cluster • Un contenedor por servicio – Ventajas ● Las aplicaciones pueden escalar horizontalmente en un cluster ● Cada contenedor puede estar en una máquina diferente ● Se pueden clonar servicios que necesitan más potencia de cómputo en varias máquinas (web, servicios statless) ● Es tolerante a fallos (un servicio se cae y se puede reiniciar)
  • 46. 46 Docker en cluster • Un contenedor por servicio – Desventajas ● Puede ser más difícil de crear si tu código está en varios contenedores ● Para webs sencillas se puede tener un contenedor para la BBDD y otros para la web (o varios) ● Existen muchas formas diferentes de gestionar una aplicación formada por varios servicios – Una sola máquina: docker-compose – Cluster: orquestadores de contendores ● Muchas formas de distribución del “conjunto”
  • 47. 47 Docker en cluster • Orquestadores de contenedores – Software encargado de gestionar la ejecución de contenedores en un cluster de máquinas – Pueden tratar varios contenedores como una única unidad lógica (aplicación) – Redes aisladas para contenedores de la misma app – Políticas de reinicio en caso de caída del servicio – Políticas de replicación de contenedores por carga
  • 48. 48 Docker en cluster • Orquestadores de contenedores http://kubernetes.io/ http://mesos.apache.org/https://docs.docker.com/engine/swarm/
  • 49. 49 Docker en cluster • Docker Swarm – Orquestador oficial del creador de Docker – Un poco inmaduro: Publicado en Julio de 2016 – Posibilidad de gestionar clusters de máquinas virtuales en AWS y Azure – Conceptos y comandos similares en local y en el cluster https://docs.docker.com/engine/swarm/
  • 50. 50 Docker en cluster • Docker Swarm Docker en un servidor Docker en un cluster
  • 51. 51 Docker en cluster • Kubernetes – Desarrollado principalmente por Google basado en sus sistemas internos de orquestación (Borg) – Muy maduro. El más utilizado y con más futuro – Disponible de forma sencilla en Google Cloud Platform y se puede instalar en local, AWS, etc – Conceptos y comandos diferentes a docker en local http://kubernetes.io/ https://www.cncf.io/
  • 53. 53 Docker en cluster • Apache Mesos – Desarrollado en la fundación Apache – Se usa sobre todo como una plataforma para gestionar las máquinas del cluster como una unidad – Permite ejecutar Hadoop, Kafka, Spark en el mismo cluster y también contenedores – Cada vez se parece más a kubernetes http://mesos.apache.org/
  • 54. 54 Docker en cluster • Existen diversas formas de ejecutar contenedores en un proveedor cloud – Ejecución manual de contenedores en una VM (IaaS) – Instalación de un orquestador de contenedores en un cluster deVms – Uso de servicios de orquestación ofrecidos por el proveedor cloud
  • 55. 55 Docker en cluster • Instalación de un orquestador de contenedores en un cluster deVMs – Kubernetes ● Se puede instalar en AWS y Azure ● Se ofrece como servicio en Google Cloud – Docker Swarm ● Se podrá instalar de forma sencilla en AWS y Azure (todavía en beta) https://blog.docker.com/2016/06/azure-aws-beta/ http://kubernetes.io/docs/getting-started-guides/aws/ http://kubernetes.io/docs/getting-started-guides/azure/
  • 56. 56 Docker en cluster • Muchos proveedores PaaS están ofreciendo la posibilidad de ejecutar la app como un contenedor docker Amazon EC2 Container Service (ECS) Google Container Engine (GKE) Orquestación propietaria Basadas en kubernetes
  • 57. 57 Docker • Docker • Docker para DataScience • Docker en cluster • Docker Swarm • Popularidad de docker
  • 58. 58 • Sólo está disponible en la versión linux (1.12) o en Docker forWindows o Docker for Mac • No está disponible en DockerToolbox Docker Swarm Worker Nodes Manager Nodes
  • 59. 59 • Los hosts con el servicio de docker (Docker Engine) que participan en un cluster swarm se dice que corren en modo swarm • Swarm es un cluster de máquinas corriendo Docker Engine • Sobre este cluster se pueden desplegar servicios • Cuando se utiliza Docker Engine sin swarm, se ejecutan comandos Docker • Cuando se utiliza Docker Engine en modo swarm, se orquestan servicios Docker Swarm
  • 60. 60 • Estructura de un cluster – Node ● host corriendo Docker Engine en modo swarm – Manager node ● Nodos del swarm que reciben descripciones de servicios y eligen cómo desplegarlos en el cluster (dispatching) ● El dispatching se realiza enviando unidades de tareas a los worker nodes ● Entre todos los manager nodes se elige a un líder, encargado de la orquestación ● Responsables de mantener los servicios funcionando Docker Swarm
  • 61. 61 • Estructura de un cluster – Worker node ● Reciben las tareas de los manager nodes ● Notifican a los manager nodes de cambios en las tareas del worker node – Managers como workers ● Por defecto los manager nodes son también worker nodes, pero podrían dejarse exclusivamente como manager nodes Docker Swarm
  • 62. 62 • Servicios  Definición de las tareas a ejecutar en los worker nodes  Principal medio de interacción con el cluster por parte del usuario  Cuando se crea un servicio se especifican  Imágenes docker a utilizar  Comandos a ejecutar dentro de dichas imágenes Docker Swarm
  • 63. 63 • Tipos de servicios  Servicios simples: definen un conjunto de tareas que se ejecutarán en los worker nodes determinados por el orquestador  Servicios replicados: el orquestador debe garantizar que las tareas del servicio están replicadas el número de veces especificado  Servicios globales: el orquestador debe garantizar que cada tarea del servicio se está ejecutando en cada worker node del cluster Docker Swarm
  • 64. 64 • Tipos de servicios Docker Swarm
  • 65. 65 • Tareas – Son la unidad mínima en swarm – Formada por ● Imagen docker ● Comandos a ejecutar dentro del contenedor – Una vez que una tarea se asigna a un worker node, no se puede mover ● O el contenedor se ejecuta o falla ● Si falla, la tarea podría ser asignada a otro worker node Docker Swarm
  • 67. 67 • Balanceo de carga  Los servicios se pueden exponer hacia el exterior  Swarm puede utilizar un puerto por defecto (Published Port)  El usuario puede escoger un puerto determinado en el rango 30,000-32,767  Swarm utiliza ingress load balancing para dirigir el tráfico hacia el contenedor  Cualquier nodo del cluster puede recibir peticiones (aunque no esté ejecutando el servicio)  Todos dirigirán las peticiones hacia los nodos que tengan la tarea Docker Swarm
  • 68. 68 • Creación de un docker Swarm en un cluster – Se instala docker en cada nodo del cluster – En un nodo se ejecuta el comando – Salida: – Los demás nodos se pueden añadir como workers o como managers To add a worker to this swarm, run the following command:      docker swarm join           ­­token SWMTKN­1­49nj1xv8rssmk743ojnwacrr2e7c           192.168.99.100:2377  Docker Swarm docker swarm init
  • 69. 69 • Desplegar un servicio  Ejecutar el comando:  Comprobar que está corriendo con el comando: Docker Swarm docker service create ­­replicas 1     ­­name helloworld alpine ping docker.com docker service ls
  • 70. 70 • Controlar el servicio  Inspeccionar el servicio: Docker Swarm docker service inspect ­­pretty helloworld ID:            9uk4639qpg7npwf3fn2aasksr  Name:          helloworld  Mode:          Replicated    Replicas:    1  Placement:  UpdateConfig:    Parallelism: 1    On failure:  pause ContainerSpec:    Image:       alpine    Args:        ping docker.com 
  • 71. 71 • Controlar el servicio  Dónde se ejecuta: Docker Swarm docker service ps helloworld ID                         NAME          IMAGE   NODE           DESIRED STATE  CURRENT STATE           ERROR 7l2sro6xvka2xwdwddk56q4d7  helloworld.1  alpine  mica­portatil  Running        Running 12 minutes ago
  • 72. 72 • Controlar el servicio  Para tener un control más preciso del servicio hay que conectarse al nodo donde está el servicio y ejecutar el comando: Docker Swarm docker ps CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS          PORTS  NAMES eedc91eea3a0        alpine:latest       "ping docker.com"   15 minutes ago      Up 15 minutes 
  • 73. 73 • Escalar el servicio  Podemos replicar los contenedores por el cluster Docker Swarm docker service scale helloworld=4 ID                         NAME          IMAGE   NODE           DESIRED STATE  CURRENT STATE            ERROR 7l2sro6xvka2xwdwddk56q4d7  helloworld.1  alpine  mica­portatil  Running        Running 17 minutes ago   ce51o29ahtf5x0livwe9jk9xp  helloworld.2  alpine  mica­portatil  Running        Running 3 seconds ago    ch9muwzzfwffwzd1jss9fto4f  helloworld.3  alpine  mica­portatil  Running        Running 3 seconds ago    a6qsw3rb05pmaudwvb6ate0af  helloworld.4  alpine  mica­portatil  Running        Running 3 seconds ago    docker service ps helloworld
  • 74. 74 • Eliminar el servicio  Comando Docker Swarm docker service rm helloworld
  • 75. 75 • Servicio con puertos públicos  Comando  Abrir en el browser Docker Swarm docker service create ­­name web      ­­replicas 3 ­­publish 9999:80 nginx http://127.0.0.1:9999/
  • 76. 76 • Docker compose y swarm  Servicios multicontenedor definidos con docker compose se pueden desplegar en un cluster swarm  Documentación Docker Swarm https://docs.docker.com/compose/swarm/
  • 77. 77 Docker • Docker • Docker para DataScience • Docker en cluster • Docker Swarm • Popularidad de docker
  • 78. 78