SlideShare una empresa de Scribd logo
Docker4Developers
by @rrequero
MADRID · NOV 18-19 · 2016
MADRID · NOV 18-19 · 2016
Quién soy?
Raúl Requero García
Twitter: @rrequero
LinkedIn:
https://www.linkedin.com/in/requerogarciaraul
MADRID · NOV 18-19 · 2016
Qué cosas hago?
MADRID · NOV 18-19 · 2016
Qué cosas hago?
MADRID · NOV 18-19 · 2016
Que vamos a ver?
- Qué es docker?
- Como crear nuestra imagen (Dockerfile)
- Y ahora, cómo ejecutamos nuestra imagen? Creamos
nuestro container
- Mi aplicación necesita varios contenedores. Qué
hago? -> Docker Compose
- Recomendaciones
MADRID · NOV 18-19 · 2016
Veámoslo todo con ejemplos
Código en github:
https://github.com/rrequero/docker4developers-talk-codemotion-2
016
MADRID · NOV 18-19 · 2016
Qué es docker?
- Es un proyecto de código abierto
(https://github.com/docker/docker)
- Permite crear contenedores Linux de
forma programática (LXC LinuX
Containers)
- Escrito en Golang
MADRID · NOV 18-19 · 2016
Qué es docker?
- Ligero
- Portable
- Autosuficiente
- Repositorio de imágenes (docker-hub)
MADRID · NOV 18-19 · 2016
Qué es docker?
Se basa en 2 conceptos principales:
- Imagen
- Contenedor
MADRID · NOV 18-19 · 2016
FROM
Nos proporciona un “lenguaje” con el que definir nuestros
contenedores.
Cómo crear nuestra imagen? Dockerfile
MAINTAINER
COPY
RUN
EXPOSE
VOLUME WORKDIR
USER
CMD
ENTRYPOINT
ENV
MADRID · NOV 18-19 · 2016
Siempre se parte de una imagen base.
Cómo crear nuestra imagen? Dockerfile
MADRID · NOV 18-19 · 2016
Vamos añadiendo cambios sobre la imagen base.
ej:
Estos cambios se reflejarán como “capas” que docker cachea.
Cómo crear nuestra imagen? Dockerfile
MADRID · NOV 18-19 · 2016
Por último, hacemos build de nuestro Dockerfile con
docker-cli
Cómo crear nuestra imagen? Dockerfile
MADRID · NOV 18-19 · 2016
Posibles parámetros:
- --no-cache: No utiliza las capas cacheadas
- --force-rm: No genera una cache por cada capa
- -t: Da un nombre a la imagen. Ej: -t <name>:<version>
- Más.....
Cómo crear nuestra imagen? Dockerfile
MADRID · NOV 18-19 · 2016
Ejemplo en vivo :)
Código en github:
https://github.com/rrequero/docker4developers-talk-codemo
tion-2016#second-part
Cómo crear nuestra imagen? Dockerfile
MADRID · NOV 18-19 · 2016
Docker-cli nos ofrece el comando run para ejecutar una
instancia de una imagen:
Y ahora, cómo ejecutamos nuestra imagen?
MADRID · NOV 18-19 · 2016
Posibles parámetros:
- -e: Pasar variables de entorno ej: -e NODE_ENV=prod
- -p: Exponer puertos hacia fuera del contenedor ej: -p
80:8000
- -v: Volúmenes. Compartir directorios entre el contenedor
y nuestra máquina ej: -v $PWD/app:/home/user/app
- -d: Ejecutar en background
- Más.....
Y ahora, cómo ejecutamos nuestra imagen?
MADRID · NOV 18-19 · 2016
Además de run, nos proporciona otros comandos como:
- docker stop <idContainer>: Parar el contenedor
- docker ps: Muestra los contenedores en ejecución (con la opción -a
muestra todos los contenedores parados y en ejecución)
- docker images: Muestra las imágenes que tenemos en nuestra
máquina
- docker rmi <idImage>: Elimina una imagen
- docker exec <container> <command>: Ejecuta un comando en el
contenedor. Ej: docker exec -it <name/id> bash
Y ahora, cómo ejecutamos nuestra imagen?
MADRID · NOV 18-19 · 2016
Docker compose:
- Herramienta que nos proporciona
Docker
- Permite componer de forma
programática un entorno de varios
contenedores que se pueden
comunicar entre sí
- docker-compose.yml
Mi aplicación necesita varios contenedores.
Qué hago? -> Docker compose
MADRID · NOV 18-19 · 2016
Mi aplicación necesita varios contenedores.
Qué hago? -> Docker compose
MADRID · NOV 18-19 · 2016
- Cada contenedor es un “service”
- Cada “service” se puede configurar:
- Imagen o dockerfile
- Puertos
- Volúmenes
- Variables de entorno
- etc
- Se pueden establecer dependencias entre ellos (depends_on)
- v2 genera una subred entre los servicios definidos (v1 necesita
link)
Mi aplicación necesita varios contenedores.
Qué hago? -> Docker compose
MADRID · NOV 18-19 · 2016
Para generar las imágenes de los servicios que
dependen de un Dockerfile, ejecutamos:
Para ejecutar los contenedores
Mi aplicación necesita varios contenedores.
Qué hago? -> Docker compose
MADRID · NOV 18-19 · 2016
Docker-compose también nos proporciona comandos
otros comandos, como:
- docker-compose stop: Para todos los contenedores
definidos en el docker-compose
- docker-compose rm: Elimina los contenedores
definidos en el docker-compose
Mi aplicación necesita varios contenedores.
Qué hago? -> Docker compose
MADRID · NOV 18-19 · 2016
Ejemplo en vivo :)
Código en github:
https://github.com/rrequero/docker4developers-talk-codemo
tion-2016#final-part
Mi aplicación necesita varios contenedores.
Qué hago? -> Docker compose
MADRID · NOV 18-19 · 2016
Seguridad:
- Nunca dejéis una imagen con el usuario de root. Establecer un
usuario.
- Solo ejecutar contenedores de confianza
- No instaleis software innecesario
- Chequear los contenedores de forma periódica en busca de posibles
vulnerabilidades y regenerarlos con los parches de seguridad
- Cuidado con que volúmenes exponeis
--volume=/var/run/docker.sock:/tmp/docker.sock
Recomendaciones
MADRID · NOV 18-19 · 2016
Performance:
- Borrar de forma periódica las imágenes sin tag que se generan y/o
utilizar --force-rm
- Al generar una imagen, intentar equilibrar el número de
capas/cache que utilizais. ¿Porque? Cada capa genera una
imagen intermedia de cache que ocupa espacio.
Recomendaciones
MADRID · NOV 18-19 · 2016
Utilidades:
- Borrar todas los contenedores parados
docker rm $(docker ps -a -q)
- Borrar todas las imagenes sin tag
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
Recomendaciones
MADRID · NOV 18-19 · 2016
Preguntas / dudas
Twitter: @rrequero
LinkedIn: https://www.linkedin.com/in/requerogarciaraul
MADRID · NOV 18-19 · 2016
Muchas gracias

Más contenido relacionado

La actualidad más candente (20)

PDF
Curso Angular 9 - CodeURJC - Marzo 2020
Micael Gallego
 
PDF
Codemotion 2015 crash y youdebug
jmiguel rodriguez
 
PDF
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!
Iván López Martín
 
ODP
Administra tu código con Git y Github
Javier Novoa Cataño
 
PPTX
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Jose Juan R. Zuñiga
 
ZIP
grails.org.mx Primera Reunion
Domingo Suarez Torres
 
PPTX
Introducción Nodejs
Jose Gratereaux
 
ODP
Seminario Grails
Escuela de Groovy
 
PDF
Fury DevopsConf 2015
Gabriel Eisbruch
 
PPTX
Java
biktop
 
PDF
Liferay 6 1, Internacionalización en nuestros desarrollos
Ematiz Tecnología, S.L.
 
PDF
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
César Hernández
 
PPTX
Spring boot et. al. para el impaciente
Miguel Ángel Enríquez López
 
PDF
Docker para Data Scientist - Master en Data Science URJC
Micael Gallego
 
PPTX
Asp.net 5 en linux , herramientas e integración
robertogg
 
PPTX
Alta disponibilidad y balanceo de carga con Linux y nginx
Plain Concepts
 
PDF
Cocoapods
NSCoder Mexico
 
PDF
Taller de biicode@UVA
Julia S. Simon
 
PPT
Creación de Plataformas
Jose Juan R. Zuñiga
 
Curso Angular 9 - CodeURJC - Marzo 2020
Micael Gallego
 
Codemotion 2015 crash y youdebug
jmiguel rodriguez
 
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!
Iván López Martín
 
Administra tu código con Git y Github
Javier Novoa Cataño
 
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Jose Juan R. Zuñiga
 
grails.org.mx Primera Reunion
Domingo Suarez Torres
 
Introducción Nodejs
Jose Gratereaux
 
Seminario Grails
Escuela de Groovy
 
Fury DevopsConf 2015
Gabriel Eisbruch
 
Java
biktop
 
Liferay 6 1, Internacionalización en nuestros desarrollos
Ematiz Tecnología, S.L.
 
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
César Hernández
 
Spring boot et. al. para el impaciente
Miguel Ángel Enríquez López
 
Docker para Data Scientist - Master en Data Science URJC
Micael Gallego
 
Asp.net 5 en linux , herramientas e integración
robertogg
 
Alta disponibilidad y balanceo de carga con Linux y nginx
Plain Concepts
 
Cocoapods
NSCoder Mexico
 
Taller de biicode@UVA
Julia S. Simon
 
Creación de Plataformas
Jose Juan R. Zuñiga
 

Similar a Docker4developers Codemotion2016 (20)

PDF
BEEVA | Introducción a Docker
BEEVA_es
 
PDF
De desarrollo a producción usando docker
Christian Rodriguez
 
PDF
Taller docker _es-cl
Felipe de Morais
 
PPTX
Primeros pasos con Docker
Álvaro Alonso González
 
PPTX
Docker como recurso de aula para docentes
MercedesLimon5
 
PDF
Dockeriza tu entorno de desarrollo
Marco Bellido
 
PDF
Docker en el entorno de desarrollo
Alejandro Hernández
 
PPTX
FROM lost to the Docker 2020
BelnGonzlezGarca1
 
PPTX
Docker containers-itb-2021
JaimeRamirez212673
 
PDF
FROM lost to the docker
Irene Alonso Candelario
 
PDF
docker.pdf
AntonyPrez3
 
PDF
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Mario IC
 
PDF
Linux y Docker, Practicas de Sistemas Operativos
Fernando Velez Varela
 
PDF
Docker images
Victor S. Recio
 
PPTX
Docker Ecosystem - Part I - Engine
Mario IC
 
PPTX
Docker 2014 v2
Gustavo Muslera
 
PPTX
Introduccion a Docker curso para saber como funciona la dockeriazacion -2
S
 
PDF
Docker: de localhost a producción
Claudio Guerra
 
PDF
nerdear.la 2016 - Docker workshop
Restorando
 
PDF
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Carlos Crisóstomo Vals
 
BEEVA | Introducción a Docker
BEEVA_es
 
De desarrollo a producción usando docker
Christian Rodriguez
 
Taller docker _es-cl
Felipe de Morais
 
Primeros pasos con Docker
Álvaro Alonso González
 
Docker como recurso de aula para docentes
MercedesLimon5
 
Dockeriza tu entorno de desarrollo
Marco Bellido
 
Docker en el entorno de desarrollo
Alejandro Hernández
 
FROM lost to the Docker 2020
BelnGonzlezGarca1
 
Docker containers-itb-2021
JaimeRamirez212673
 
FROM lost to the docker
Irene Alonso Candelario
 
docker.pdf
AntonyPrez3
 
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Mario IC
 
Linux y Docker, Practicas de Sistemas Operativos
Fernando Velez Varela
 
Docker images
Victor S. Recio
 
Docker Ecosystem - Part I - Engine
Mario IC
 
Docker 2014 v2
Gustavo Muslera
 
Introduccion a Docker curso para saber como funciona la dockeriazacion -2
S
 
Docker: de localhost a producción
Claudio Guerra
 
nerdear.la 2016 - Docker workshop
Restorando
 
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Carlos Crisóstomo Vals
 
Publicidad

Último (6)

PDF
AU-COMO INICIAR SESIÓN EN ANYDESK CON CRTL+ALT+SUP DESHABILITADO.pdf
Serviciojat
 
PPTX
Tema6 estructuras condicionales básicas pseint.pptx
lmcsenatic
 
PPT
ONSULTA A PARTIR DE MULTIPLES TABLAS .ppt
42982335
 
PPTX
sistemas información caracteríaticas-1.pptx
forozco17fo2
 
PDF
Variacion ciclica .pdf untumbes estadística
130021222
 
PPTX
Presentacion Python en Microbit (Primeros pasos)
rcamilot
 
AU-COMO INICIAR SESIÓN EN ANYDESK CON CRTL+ALT+SUP DESHABILITADO.pdf
Serviciojat
 
Tema6 estructuras condicionales básicas pseint.pptx
lmcsenatic
 
ONSULTA A PARTIR DE MULTIPLES TABLAS .ppt
42982335
 
sistemas información caracteríaticas-1.pptx
forozco17fo2
 
Variacion ciclica .pdf untumbes estadística
130021222
 
Presentacion Python en Microbit (Primeros pasos)
rcamilot
 
Publicidad

Docker4developers Codemotion2016

  • 2. MADRID · NOV 18-19 · 2016 Quién soy? Raúl Requero García Twitter: @rrequero LinkedIn: https://www.linkedin.com/in/requerogarciaraul
  • 3. MADRID · NOV 18-19 · 2016 Qué cosas hago?
  • 4. MADRID · NOV 18-19 · 2016 Qué cosas hago?
  • 5. MADRID · NOV 18-19 · 2016 Que vamos a ver? - Qué es docker? - Como crear nuestra imagen (Dockerfile) - Y ahora, cómo ejecutamos nuestra imagen? Creamos nuestro container - Mi aplicación necesita varios contenedores. Qué hago? -> Docker Compose - Recomendaciones
  • 6. MADRID · NOV 18-19 · 2016 Veámoslo todo con ejemplos Código en github: https://github.com/rrequero/docker4developers-talk-codemotion-2 016
  • 7. MADRID · NOV 18-19 · 2016 Qué es docker? - Es un proyecto de código abierto (https://github.com/docker/docker) - Permite crear contenedores Linux de forma programática (LXC LinuX Containers) - Escrito en Golang
  • 8. MADRID · NOV 18-19 · 2016 Qué es docker? - Ligero - Portable - Autosuficiente - Repositorio de imágenes (docker-hub)
  • 9. MADRID · NOV 18-19 · 2016 Qué es docker? Se basa en 2 conceptos principales: - Imagen - Contenedor
  • 10. MADRID · NOV 18-19 · 2016 FROM Nos proporciona un “lenguaje” con el que definir nuestros contenedores. Cómo crear nuestra imagen? Dockerfile MAINTAINER COPY RUN EXPOSE VOLUME WORKDIR USER CMD ENTRYPOINT ENV
  • 11. MADRID · NOV 18-19 · 2016 Siempre se parte de una imagen base. Cómo crear nuestra imagen? Dockerfile
  • 12. MADRID · NOV 18-19 · 2016 Vamos añadiendo cambios sobre la imagen base. ej: Estos cambios se reflejarán como “capas” que docker cachea. Cómo crear nuestra imagen? Dockerfile
  • 13. MADRID · NOV 18-19 · 2016 Por último, hacemos build de nuestro Dockerfile con docker-cli Cómo crear nuestra imagen? Dockerfile
  • 14. MADRID · NOV 18-19 · 2016 Posibles parámetros: - --no-cache: No utiliza las capas cacheadas - --force-rm: No genera una cache por cada capa - -t: Da un nombre a la imagen. Ej: -t <name>:<version> - Más..... Cómo crear nuestra imagen? Dockerfile
  • 15. MADRID · NOV 18-19 · 2016 Ejemplo en vivo :) Código en github: https://github.com/rrequero/docker4developers-talk-codemo tion-2016#second-part Cómo crear nuestra imagen? Dockerfile
  • 16. MADRID · NOV 18-19 · 2016 Docker-cli nos ofrece el comando run para ejecutar una instancia de una imagen: Y ahora, cómo ejecutamos nuestra imagen?
  • 17. MADRID · NOV 18-19 · 2016 Posibles parámetros: - -e: Pasar variables de entorno ej: -e NODE_ENV=prod - -p: Exponer puertos hacia fuera del contenedor ej: -p 80:8000 - -v: Volúmenes. Compartir directorios entre el contenedor y nuestra máquina ej: -v $PWD/app:/home/user/app - -d: Ejecutar en background - Más..... Y ahora, cómo ejecutamos nuestra imagen?
  • 18. MADRID · NOV 18-19 · 2016 Además de run, nos proporciona otros comandos como: - docker stop <idContainer>: Parar el contenedor - docker ps: Muestra los contenedores en ejecución (con la opción -a muestra todos los contenedores parados y en ejecución) - docker images: Muestra las imágenes que tenemos en nuestra máquina - docker rmi <idImage>: Elimina una imagen - docker exec <container> <command>: Ejecuta un comando en el contenedor. Ej: docker exec -it <name/id> bash Y ahora, cómo ejecutamos nuestra imagen?
  • 19. MADRID · NOV 18-19 · 2016 Docker compose: - Herramienta que nos proporciona Docker - Permite componer de forma programática un entorno de varios contenedores que se pueden comunicar entre sí - docker-compose.yml Mi aplicación necesita varios contenedores. Qué hago? -> Docker compose
  • 20. MADRID · NOV 18-19 · 2016 Mi aplicación necesita varios contenedores. Qué hago? -> Docker compose
  • 21. MADRID · NOV 18-19 · 2016 - Cada contenedor es un “service” - Cada “service” se puede configurar: - Imagen o dockerfile - Puertos - Volúmenes - Variables de entorno - etc - Se pueden establecer dependencias entre ellos (depends_on) - v2 genera una subred entre los servicios definidos (v1 necesita link) Mi aplicación necesita varios contenedores. Qué hago? -> Docker compose
  • 22. MADRID · NOV 18-19 · 2016 Para generar las imágenes de los servicios que dependen de un Dockerfile, ejecutamos: Para ejecutar los contenedores Mi aplicación necesita varios contenedores. Qué hago? -> Docker compose
  • 23. MADRID · NOV 18-19 · 2016 Docker-compose también nos proporciona comandos otros comandos, como: - docker-compose stop: Para todos los contenedores definidos en el docker-compose - docker-compose rm: Elimina los contenedores definidos en el docker-compose Mi aplicación necesita varios contenedores. Qué hago? -> Docker compose
  • 24. MADRID · NOV 18-19 · 2016 Ejemplo en vivo :) Código en github: https://github.com/rrequero/docker4developers-talk-codemo tion-2016#final-part Mi aplicación necesita varios contenedores. Qué hago? -> Docker compose
  • 25. MADRID · NOV 18-19 · 2016 Seguridad: - Nunca dejéis una imagen con el usuario de root. Establecer un usuario. - Solo ejecutar contenedores de confianza - No instaleis software innecesario - Chequear los contenedores de forma periódica en busca de posibles vulnerabilidades y regenerarlos con los parches de seguridad - Cuidado con que volúmenes exponeis --volume=/var/run/docker.sock:/tmp/docker.sock Recomendaciones
  • 26. MADRID · NOV 18-19 · 2016 Performance: - Borrar de forma periódica las imágenes sin tag que se generan y/o utilizar --force-rm - Al generar una imagen, intentar equilibrar el número de capas/cache que utilizais. ¿Porque? Cada capa genera una imagen intermedia de cache que ocupa espacio. Recomendaciones
  • 27. MADRID · NOV 18-19 · 2016 Utilidades: - Borrar todas los contenedores parados docker rm $(docker ps -a -q) - Borrar todas las imagenes sin tag docker rmi $(docker images | grep "^<none>" | awk "{print $3}") Recomendaciones
  • 28. MADRID · NOV 18-19 · 2016 Preguntas / dudas Twitter: @rrequero LinkedIn: https://www.linkedin.com/in/requerogarciaraul
  • 29. MADRID · NOV 18-19 · 2016 Muchas gracias