Upload
ivan-lopez
View
502
Download
1
Embed Size (px)
Citation preview
➢ Iván López - @ilopmar
➢ Desarrollador Groovy & Grails Miembro del equipo de Grails en OCI
➢ Coordinador @MadridGUG
http://www.madridgug.com
➢ Organizador Greach (@greachconf)
http://greachconf.com
➢ Speaker: SpringOne 2GX, GR8Conf, Codemotion, GeeCon, Spring IO, Greach, JavaCro, RigaDevDay,...
Quien soy
➢ Entorno de ejecución portable para applicaciones
➢ Cada aplicación se ejecuta en su propio contenedor aislado
➢ Elimina preocupaciones sobre compatibilidad en diferentes
plataformas
➢ Como una VM sin el overhead de una VM
➢ Más ligero que una VM
Introducción a Docker
Hypervisor
Host OS
Server
VM
AppA
GuestOS
Bins/Libs
AppA'
GuestOS
Bins/Libs
AppB
GuestOS
Bins/Libs
Do
cker
Host OS
Server
Bins/Libs
Contenedor
Bins/Libs
App A
App A'
App B
App B'
App B'
App B'
VM vs Docker
$ docker run --rm java:9 java -versionopenjdk version "9-Debian"
OpenJDK Runtime Environment (build 9-Debian+0-9b140-1)
OpenJDK 64-Bit Server VM (build 9-Debian+0-9b140-1, mixed mode)
$ alias java="docker run --rm java:9 java"
$ java -version
Docker básico
FROM nginx:1.11.5
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Dockerfile
<h1>Hola Codemotion!</h1>
index.html
Crear imagen
$ docker build -t codemotion .Sending build context to Docker daemon 2.048 kB
Step 1 : FROM nginx:1.11.5
---> 6dde4f9ae735
Step 2 : COPY index.html /usr/share/nginx/html/
---> c1c0f4eeffe4
Removing intermediate container 08fb8441e6be
Step 3 : EXPOSE 80
---> Running in 4d6151c06c9b
---> e07151354dc9
Removing intermediate container 4d6151c06c9b
Step 4 : CMD nginx -g daemon off;
---> Running in 8edd425ce757
---> ef945069377f
Removing intermediate container 8edd425ce757
Successfully built ef945069377f
Crear imagen
Debian 8 Java 8 RabbitMQ 3.6 Postgres 9.4Spring Boot 1.4.1
Producer Consumer
Grails 3.2.2
Nuestra aplicación
➢ Todo instalada en el mismo contendor
➢ Más de un proceso por contenedor (!!)
➢ Fácil de mantener y utilizar
➢ Centrado sólo en entorno de desarrollo
La forma fácil
➢ Cada aplicación en un contenedor diferente
➢ Sólo un proceso por contenedor
➢ Más complicado de mantener
➢ Más flexible y preparado para otros entornos
La forma flexible
Fácil de empezar a ser productivo
Mismo entorno de dev para todos
Control de la versión de cada componente de la arquitectura
Orquestación es más complicada
Pero es más potente ¡Todo el mundoes féliz!
Resumen
¡Gracias!¿Preguntas?
http://bit.ly/dockeriza-java
@ilopmar
https://github.com/ilopmar
Iván López