SlideShare a Scribd company logo
1 of 35
Download to read offline
FROM lost to
the Docker
Bienvenido
Index
1. Introducción a Docker
2. Imágenes y Contenedores
3. Repositorio de imágenes
4. Creación de un contenedor
5. Docker como herramienta de ayuda al
desarrollo
6. Distribución de aplicaciones
7. Dockerfile
8. Ecosistema
9. Docker-Compose
.
1.¿Qué es Docker y qué
problemas pretende resolver?
Empaquetado de aplicaciones o sistemas
Encapsula (casi) cualquier
aplicación/sistema
Despliegue multi plataforma (Linux,
Windows, macOS)
Simplifica sistema de despliegue en
grandes infraestructuras IT.
Útil como herramienta de desarrollo.
Abstrae de las particularidades de cada
aplicación/sistema
Acceso vía consola o tcp (puertos)
a las aplicaciones embebidas en
contenedores
.
2. Imágenes y contenedores
Diferencia entre una imagen y un contenedor Docker
Imágenes VS Contenedores
CONTENEDORES docker ps –a
• Instancia en ejecución de una imagen
• Contiene datos “vivos”, que desaparecen si se
borra el contenedor (salvo uso de volúmenes)
• Pueden existir diferentes contenedores en
ejecución de una misma imagen
• Al crear el contenedor se establecen los
parámetros específicos requeridos o
esperados por la imagen (puertos, volúmenes,
variables, …)
IMAGENES docker images
• Contiene la definición/contenido estático de una
aplicación o sistema
• Se almacenan en repositories (registros), tanto
en local como en remoto
• Las imágenes suelen estar definidas a partir de
otras imágenes
• Pueden existir diferentes versiones de una
imagen en un repositorio
• La imagen determina el software a ejecutar al
crear el contenedor y cómo va a interactuar con
el host (Puertos, volúmenes, variables de
entorno, …)
.
3. Repositorio de imágenes
Repositorio de imágenes, local y remoto
Imágenes locales
Listar imágenes en repo local
docker images
Descargar imagen desde repo remoto
docker pull image_name:tag
Borrar imagen de repo local
docker rmi image_name:tag
docker rmi image_id
Imágenes remotas
hub.docker.com
Generalmente de uso privado dentro de la
organización.
Otros repositorios
Repositorio principal y por defecto
Acceso público mediante registro
Todas las imágenes “oficiales” de los
principales fabricantes: Ubuntu, Fedora,
MySQL, Postgres, …
Acceso a imágenes de la comunidad open
source
Utilizados dentro del ciclo ALM
.
4. Creación de un contenedor
Como crear un contenedor a partir de una imagen
Ejemplos de contenedores
BBDD MySQL
docker volume create mysql_project1_data_vol
docker run --name project1-mysql -p 127.0.0.1:3306:3306 -v
mysql_project1_data_vol:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=holahola -d
mysql:8
Acceso contenedor en ejecución
docker exec -it project1-mysql /bin/bash
Listar contenedores en ejecución
docker ps
“Hola mundo” por consola
docker run -it --rm hairyhenderson/figlet "Hello world!!"
.
5. Docker como herramienta
de ayuda al desarrollo
Uso de Docker en entorno de desarrollo local para
lanzar herramientas y backends
Gestión básica integrada
Ejemplo BBDD Postgres
docker volume create pgdata1
docker run --name qo-meetup-pg -v
"pgdata1:/var/lib/postgresql/data" -p 5432:5432 -e
POSTGRES_PASSWORD=holahola -d postgres:11
Gestión básica desde VSCode
Extensión “Docker” de Microsoft
https://marketplace.visualstudio.com/items?itemName=ms-
azuretools.vscode-docker
Gestión visual (web)
Herramienta Portainer https://hub.docker.com/r/portainer/portainer/
docker volume create portainer_data
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --name
portainer --restart always -v portainer_data:/data portainer/portainer
.
6. Distribución de aplicaciones
Empaquetado de aplicaciones propias en
Imágenes Docker
Cómo construir imágenes
Parametrizar todo lo que puede variar
entre entornos aunque usando valores
por defecto donde sea posible.
Definir información persistente
(volúmenes)
Reducir en la medida de lo posible los
pasos (Steps) de construcción
Sistema de versionado coherente
Ejemplos de construcción de imágenes
Ejemplo salida de comando
Sending build context to Docker daemon 12.8kB
Step 1/4 : FROM nginx
---> ab56bba91343
Step 2/4 : RUN rm
/etc/nginx/conf.d/default.conf
---> Using cache
---> 58500316034f
Step 3/4 : COPY index.html
/usr/share/nginx/html/index.html
---> Using cache
---> 25bc10d90fd9
Step 4/4 : COPY default.conf
/etc/nginx/conf.d/default.conf
---> Using cache
---> 0c53666127c0
Successfully built 0c53666127c0
Successfully tagged qualityobjects/appjava:2.5
Successfully tagged qualityobjects/appjava:latest
Construcción
docker build -f Dockerfile.myapp --build-arg jar_file=myapp_2.5.jar --
tag=qualityobjects/appjava:2.5 --tag=qualityobjects/appjava:latest .
SECURITY WARNING: You are building a Docker image
from Windows against a non-Windows Docker host. All
files and directories added to build context
will have '-rwxr-xr-x' permissions. It is
recommended to double check and reset permissions
for sensitive files and directories.
.
7. Dockerfile
Estructura básica de un Dockerfile.
Ejemplos de uso real
Composición Dockerfile
Preparación entorno de ejecución
RUN apt-get update && apt-get install -y package-bar package-baz package-foo
COPY myapp.jar /opt/myapp.jar
Parametrización runtime/building
ENV ADMIN_USER="mark"
ARG from_version="latest"
Puertos/volúmenes
EXPOSE 80 443
VOLUME ["/opt/data","/var/myapp"]
Origen y metadatos
FROM Ubuntu:18.04
LABEL myapp.version=“0.1” vendor=“Quality Objects”
Inicialización/ejecución del contenedor
ENTRYPOINT ["echo", "Hola"]
CMD ["Mundo"]
Ejemplos Dockerfile
Aplicación web
FROM nginx:latest
RUN rm
/etc/nginx/conf.d/default.conf
COPY default.conf
/etc/nginx/conf.d/default.conf
RUN chmod 644 /etc/nginx/conf.d/*
COPY index.html
/usr/share/nginx/html/index.html
RUN chmod 766
/usr/share/nginx/html/index.html
Aplicación Java SpringBoot
FROM ubuntu:18.04
LABEL vendor=“QO" description=“Java Example”
RUN apt update -y && apt install -y openjdk-11-
jre-headless && apt clean
ENV PORT=8080
RUN mkdir /opt/app
WORKDIR /opt/app
EXPOSE ${PORT}
COPY h3lp3r-back.jar ./h3lp3r-back.jar
ENTRYPOINT ["bash", "-c" ]
CMD ["/usr/bin/java -jar ${JARFILE} --
port=${PORT}"]
Building + Distribution I
FROM ubuntu:18.04 as builder
LABEL vendor="Quality Objects" 
description="SpringBoot+Angular Builder"
RUN apt update -y && apt install -y curl
RUN curl -sL
https://deb.nodesource.com/setup_10.x | bash -
#Instalamos el JDK y node runtime
RUN apt install -y openjdk-11-jre-headless maven
nodejs && apt clean
RUN npm install -g @angular/cli
ENV WORKSPACE=/opt/workspace
ENV JARFILE=java-server.jar
RUN mkdir $WORKSPACE
WORKDIR "$WORKSPACE"
ADD workspace.tgz $WORKSPACE
RUN cd $WORKSPACE
RUN ng config -g cli.warnings.versionMismatch
false
RUN cd angular-front && npm i && node --max-old-
space-size=7000 /usr/bin/ng build --prod
RUN cd angular-front/dist/angular-front && tar
cvfz "${WORKSPACE}/angular-front.tgz" *
#Linea para servir el front desde java
RUN cd java_server/src/main/resources/static &&
tar xfz "${WORKSPACE}/angular-front.tgz"
RUN cd java_server && mvn package -DskipTests=true
&& mv target/*.jar
../${JARFILE}
Continua
Building
Building + Distribution II
FROM ubuntu:18.04 as executor
LABEL vendor="Quality Objects" 
description="App runtime"
RUN apt update -y && apt install -y curl
openjdk-11-jre-headless && apt clean
ENV PORT=8080
ENV DB_HOST=localhost
ENV DB_NAME=mydb
ENV DB_USER=user1
ENV DB_PASSWORD=pass_user1
ENV JARFILE=java-server.jar
RUN mkdir /opt/app
WORKDIR /opt/app
EXPOSE ${PORT}
COPY --from=builder /opt/workspace/${JARFILE}
${JARFILE}
ENTRYPOINT ["bash", "-c" ]
CMD ["/usr/bin/java -jar ${JARFILE} --
port=${PORT} --db-host=${DB_HOST} --db-
name=${DB_NAME} --db-user=${DB_USER} --db-
password=${DB_PASSWORD}"]
DistributionSigue
.
8. Ecosistema
Docker, mucho más que un
conjunto de herramientas
Momentum
Crecimiento de manera casi exponencial en apenas unos pocos años
2018 Fuente: https://blog.docker.com/2018/03/5-years-later-docker-journey/
Acceso centralizado (Docker HUB) a
imágenes de todo tipo de backends y
aplicaciones para su uso en local o en
entornos de producción
Resumen Docker
Entorno “sandbox” para probar nuevas
tecnologías
Herramienta para construir y distribuir
nuestras aplicaciones independientemente
del tipo de entorno (Docker-compose,
Kubernetes, …) o tipo de nube (Amazon,
Azure, Google Cloud, …)
Herramienta para pruebas de integración
Estandarización despliegue.
Ventajas
Multiplataforma.
Mejor aprovechamiento del HW entornos de
producción, frente a virtualización tradicional.
Facilita el upgrade (re-despliegue) de
aplicaciones y el rollback.
Facilita probar nuevas tecnologías sin
“ensuciar” el entorno local.
Facilita procesos CI/CD.
.
9. Docker compose
Introducción despliegue y gestión básica
Introducción
¿Qué es Docker- compose?
Despliegue de sistemas con múltiples
contenedores
Instalación habitual en single- node
Ventajas frente a otras soluciones de
orquestación
Despliegue de aplicación
Aplicación con 2 o más contenedores
Gestión integral del sistema desplegado
Definición de variables de entorno y
volúmenes
Fichero descriptor: docker-compose.yml
docker-compose.yml
version: '3.7'
services:
service1:
container_name: service1
image: imagename:tag
restart: unless-stopped
volumes:
- my-data:/…/data
ports:
- xxxx:xxxx
healthcheck:
service2:
…
volumes:
my-data:
external:
docker-vol-name
Ejemplo Docker-compose.yml
version: '3'
services:
h3lp3r-db:
container_name: h3lp3r-db
image: postgres:11
restart: unless-stopped
volumes:
- "/opt/volumes/h3lp3r-
db:/var/lib/postgresql/data"
ports:
- 127.0.0.1:5432:5432
healthcheck:
test: ["CMD",
"/usr/bin/pg_isready"]
interval: 1m
timeout: 2s
retries: 5
h3lp3r-front:
container_name: h3lp3r-front
image: qualityobjects/h3lp3r-
front:latest
restart: unless-stopped
ports:
- 127.0.0.1:1080:80
adminer:
container_name: adminer
image: adminer:latest
restart: always
ports:
- 8181:8080
h3lp3r-back:
container_name: h3lp3r-back
image: qualityobjects/h3lp3r-
back:latest
restart: unless-stopped
environment:
PORT: 8080
DB_HOST: h3lp3r-db
DB_NAME: h3lp3r
DB_USER: h3lp3r
DB_PASSWORD: h3lp3r
ports:
- 127.0.0.1:8080:8080
depends_on:
- h3lp3r-db
Gestión básica
Herramienta: docker-compose
Listado de sistemas desplegados
Parar-arrancar sistemas completos y
contenedores específicos
Acceso a contenedores y logs
Comandos habituales
Listar servicios
docker-compose ps
Lanzar aplicación
docker-compose up -d
Reiniciar servicios
docker-compose restart
Mostrar logs (todos los servicios)
docker-compose logs -f
Eliminar servicios (conten.)
docker-compose rm
Recursos
Repositorios GIT de la app
https://gitlab.com/qo-oss/h3lp3r
Repositorio Docker con imágenes de la app
https://hub.docker.com/u/qualityobjects
Resumen de comandos
https://gitlab.com/qo-oss/h3lp3r/h3lp3r-
back/tree/master/etc/meetup
Gracias ;)
Roberto Sánchez:
https://www.linkedin.com/in/robertosanchezcustodio
https://www.meetup.com/QOnecta/

More Related Content

What's hot

Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014quaip
 
nerdear.la 2016 - Docker workshop
nerdear.la 2016 - Docker workshopnerdear.la 2016 - Docker workshop
nerdear.la 2016 - Docker workshopRestorando
 
Seminario CLEFormacion-docker
Seminario CLEFormacion-dockerSeminario CLEFormacion-docker
Seminario CLEFormacion-dockerCLEFormación
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Restorando
 
Divide y vencerás con docker y core os
Divide y vencerás con docker y core osDivide y vencerás con docker y core os
Divide y vencerás con docker y core osDavid Luque Quintana
 
Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019
Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019
Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019Luis Enrique Tejeda Rodriguez
 
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...Software Guru
 
Docker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoMario IC
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación DockerITPAMI
 
Docker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoRestorando
 
Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetesjdezine
 
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 2018Vicente Gerardo Guzman Lucio
 

What's hot (20)

DevOps+[Chef/Docker]
 DevOps+[Chef/Docker] DevOps+[Chef/Docker]
DevOps+[Chef/Docker]
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
 
Conceptos avanzados en docker
Conceptos avanzados en dockerConceptos avanzados en docker
Conceptos avanzados en docker
 
nerdear.la 2016 - Docker workshop
nerdear.la 2016 - Docker workshopnerdear.la 2016 - Docker workshop
nerdear.la 2016 - Docker workshop
 
Seminario CLEFormacion-docker
Seminario CLEFormacion-dockerSeminario CLEFormacion-docker
Seminario CLEFormacion-docker
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Divide y vencerás con docker y core os
Divide y vencerás con docker y core osDivide y vencerás con docker y core os
Divide y vencerás con docker y core os
 
Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019
Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019
Orquestando Contenedores En La Nube - Enrique Tejeda - Sloth 2019
 
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...
 
Docker desde cero
Docker desde ceroDocker desde cero
Docker desde cero
 
Docker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 Huancayo
 
introducción a Docker
introducción a Dockerintroducción a Docker
introducción a Docker
 
Fury - Docker Meetup
Fury - Docker MeetupFury - Docker Meetup
Fury - Docker Meetup
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
Docker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en Restorando
 
Introduction to docker. Stratio
Introduction to docker. StratioIntroduction to docker. Stratio
Introduction to docker. Stratio
 
Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetes
 
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
 

Similar to FROM lost to the docker

FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020BelnGonzlezGarca1
 
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Keopx
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemMario IC
 
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryDocker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryMario IC
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacionStivenLopez46
 
Docker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJSDocker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJSJan Sanchez
 
Dockerparadesarrollo
DockerparadesarrolloDockerparadesarrollo
DockerparadesarrolloEric Zeidan
 
Usando Docker con sistemas Asterisk
Usando Docker con sistemas AsteriskUsando Docker con sistemas Asterisk
Usando Docker con sistemas AsteriskVOIP2DAY
 
Usando Docker con sistemas Asterisk
Usando Docker con sistemas AsteriskUsando Docker con sistemas Asterisk
Usando Docker con sistemas AsteriskElio Rojano
 
Docker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineDocker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineMario IC
 
De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando dockerChristian Rodriguez
 

Similar to FROM lost to the docker (20)

FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020
 
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker Ecosystem
 
Jug málaga docker 101 - final
Jug málaga   docker 101 - finalJug málaga   docker 101 - final
Jug málaga docker 101 - final
 
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryDocker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
 
Curso gratuito de Docker
Curso gratuito de DockerCurso gratuito de Docker
Curso gratuito de Docker
 
Primeros pasos con Docker
Primeros pasos con DockerPrimeros pasos con Docker
Primeros pasos con Docker
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
Taller docker _es-cl
Taller docker _es-clTaller docker _es-cl
Taller docker _es-cl
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacion
 
Docker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJSDocker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJS
 
Dockerparadesarrollo
DockerparadesarrolloDockerparadesarrollo
Dockerparadesarrollo
 
Usando Docker con sistemas Asterisk
Usando Docker con sistemas AsteriskUsando Docker con sistemas Asterisk
Usando Docker con sistemas Asterisk
 
Usando Docker con sistemas Asterisk
Usando Docker con sistemas AsteriskUsando Docker con sistemas Asterisk
Usando Docker con sistemas Asterisk
 
Docker
DockerDocker
Docker
 
Docker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineDocker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - Engine
 
Taller girona
Taller gironaTaller girona
Taller girona
 
Dockers y wp
Dockers y wpDockers y wp
Dockers y wp
 
Docker and networking
Docker and networkingDocker and networking
Docker and networking
 
De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando docker
 

More from Irene Alonso Candelario

More from Irene Alonso Candelario (8)

Primeros pasos con ReactNative
Primeros pasos con ReactNativePrimeros pasos con ReactNative
Primeros pasos con ReactNative
 
QO_ Taller de autocuidado ante un apocalipsis zombie
QO_ Taller de autocuidado ante un apocalipsis zombieQO_ Taller de autocuidado ante un apocalipsis zombie
QO_ Taller de autocuidado ante un apocalipsis zombie
 
Recetario creativo_QOcreando por la igualdad
Recetario creativo_QOcreando por la igualdadRecetario creativo_QOcreando por la igualdad
Recetario creativo_QOcreando por la igualdad
 
OKRs: Mide tu impacto
OKRs: Mide tu impactoOKRs: Mide tu impacto
OKRs: Mide tu impacto
 
Gamificando retrospectivas
Gamificando retrospectivasGamificando retrospectivas
Gamificando retrospectivas
 
Resiliencia ¡Tirar p´alante!
Resiliencia ¡Tirar p´alante!Resiliencia ¡Tirar p´alante!
Resiliencia ¡Tirar p´alante!
 
Qo "Superpoderes para hablar en positivo"
Qo "Superpoderes para hablar en positivo"Qo "Superpoderes para hablar en positivo"
Qo "Superpoderes para hablar en positivo"
 
¡Manos a la obra con Design Thinking!
 ¡Manos a la obra con Design Thinking! ¡Manos a la obra con Design Thinking!
¡Manos a la obra con Design Thinking!
 

Recently uploaded

Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 

Recently uploaded (20)

Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 

FROM lost to the docker

  • 2. Bienvenido Index 1. Introducción a Docker 2. Imágenes y Contenedores 3. Repositorio de imágenes 4. Creación de un contenedor 5. Docker como herramienta de ayuda al desarrollo 6. Distribución de aplicaciones 7. Dockerfile 8. Ecosistema 9. Docker-Compose
  • 3. . 1.¿Qué es Docker y qué problemas pretende resolver?
  • 4. Empaquetado de aplicaciones o sistemas Encapsula (casi) cualquier aplicación/sistema Despliegue multi plataforma (Linux, Windows, macOS) Simplifica sistema de despliegue en grandes infraestructuras IT. Útil como herramienta de desarrollo. Abstrae de las particularidades de cada aplicación/sistema Acceso vía consola o tcp (puertos) a las aplicaciones embebidas en contenedores
  • 5. . 2. Imágenes y contenedores Diferencia entre una imagen y un contenedor Docker
  • 6. Imágenes VS Contenedores CONTENEDORES docker ps –a • Instancia en ejecución de una imagen • Contiene datos “vivos”, que desaparecen si se borra el contenedor (salvo uso de volúmenes) • Pueden existir diferentes contenedores en ejecución de una misma imagen • Al crear el contenedor se establecen los parámetros específicos requeridos o esperados por la imagen (puertos, volúmenes, variables, …) IMAGENES docker images • Contiene la definición/contenido estático de una aplicación o sistema • Se almacenan en repositories (registros), tanto en local como en remoto • Las imágenes suelen estar definidas a partir de otras imágenes • Pueden existir diferentes versiones de una imagen en un repositorio • La imagen determina el software a ejecutar al crear el contenedor y cómo va a interactuar con el host (Puertos, volúmenes, variables de entorno, …)
  • 7. . 3. Repositorio de imágenes Repositorio de imágenes, local y remoto
  • 8. Imágenes locales Listar imágenes en repo local docker images Descargar imagen desde repo remoto docker pull image_name:tag Borrar imagen de repo local docker rmi image_name:tag docker rmi image_id
  • 9. Imágenes remotas hub.docker.com Generalmente de uso privado dentro de la organización. Otros repositorios Repositorio principal y por defecto Acceso público mediante registro Todas las imágenes “oficiales” de los principales fabricantes: Ubuntu, Fedora, MySQL, Postgres, … Acceso a imágenes de la comunidad open source Utilizados dentro del ciclo ALM
  • 10. . 4. Creación de un contenedor Como crear un contenedor a partir de una imagen
  • 11. Ejemplos de contenedores BBDD MySQL docker volume create mysql_project1_data_vol docker run --name project1-mysql -p 127.0.0.1:3306:3306 -v mysql_project1_data_vol:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=holahola -d mysql:8 Acceso contenedor en ejecución docker exec -it project1-mysql /bin/bash Listar contenedores en ejecución docker ps “Hola mundo” por consola docker run -it --rm hairyhenderson/figlet "Hello world!!"
  • 12. . 5. Docker como herramienta de ayuda al desarrollo Uso de Docker en entorno de desarrollo local para lanzar herramientas y backends
  • 13. Gestión básica integrada Ejemplo BBDD Postgres docker volume create pgdata1 docker run --name qo-meetup-pg -v "pgdata1:/var/lib/postgresql/data" -p 5432:5432 -e POSTGRES_PASSWORD=holahola -d postgres:11 Gestión básica desde VSCode Extensión “Docker” de Microsoft https://marketplace.visualstudio.com/items?itemName=ms- azuretools.vscode-docker
  • 14. Gestión visual (web) Herramienta Portainer https://hub.docker.com/r/portainer/portainer/ docker volume create portainer_data docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --name portainer --restart always -v portainer_data:/data portainer/portainer
  • 15. . 6. Distribución de aplicaciones Empaquetado de aplicaciones propias en Imágenes Docker
  • 16. Cómo construir imágenes Parametrizar todo lo que puede variar entre entornos aunque usando valores por defecto donde sea posible. Definir información persistente (volúmenes) Reducir en la medida de lo posible los pasos (Steps) de construcción Sistema de versionado coherente
  • 17. Ejemplos de construcción de imágenes Ejemplo salida de comando Sending build context to Docker daemon 12.8kB Step 1/4 : FROM nginx ---> ab56bba91343 Step 2/4 : RUN rm /etc/nginx/conf.d/default.conf ---> Using cache ---> 58500316034f Step 3/4 : COPY index.html /usr/share/nginx/html/index.html ---> Using cache ---> 25bc10d90fd9 Step 4/4 : COPY default.conf /etc/nginx/conf.d/default.conf ---> Using cache ---> 0c53666127c0 Successfully built 0c53666127c0 Successfully tagged qualityobjects/appjava:2.5 Successfully tagged qualityobjects/appjava:latest Construcción docker build -f Dockerfile.myapp --build-arg jar_file=myapp_2.5.jar -- tag=qualityobjects/appjava:2.5 --tag=qualityobjects/appjava:latest . SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
  • 18. . 7. Dockerfile Estructura básica de un Dockerfile. Ejemplos de uso real
  • 19. Composición Dockerfile Preparación entorno de ejecución RUN apt-get update && apt-get install -y package-bar package-baz package-foo COPY myapp.jar /opt/myapp.jar Parametrización runtime/building ENV ADMIN_USER="mark" ARG from_version="latest" Puertos/volúmenes EXPOSE 80 443 VOLUME ["/opt/data","/var/myapp"] Origen y metadatos FROM Ubuntu:18.04 LABEL myapp.version=“0.1” vendor=“Quality Objects” Inicialización/ejecución del contenedor ENTRYPOINT ["echo", "Hola"] CMD ["Mundo"]
  • 20. Ejemplos Dockerfile Aplicación web FROM nginx:latest RUN rm /etc/nginx/conf.d/default.conf COPY default.conf /etc/nginx/conf.d/default.conf RUN chmod 644 /etc/nginx/conf.d/* COPY index.html /usr/share/nginx/html/index.html RUN chmod 766 /usr/share/nginx/html/index.html Aplicación Java SpringBoot FROM ubuntu:18.04 LABEL vendor=“QO" description=“Java Example” RUN apt update -y && apt install -y openjdk-11- jre-headless && apt clean ENV PORT=8080 RUN mkdir /opt/app WORKDIR /opt/app EXPOSE ${PORT} COPY h3lp3r-back.jar ./h3lp3r-back.jar ENTRYPOINT ["bash", "-c" ] CMD ["/usr/bin/java -jar ${JARFILE} -- port=${PORT}"]
  • 21. Building + Distribution I FROM ubuntu:18.04 as builder LABEL vendor="Quality Objects" description="SpringBoot+Angular Builder" RUN apt update -y && apt install -y curl RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - #Instalamos el JDK y node runtime RUN apt install -y openjdk-11-jre-headless maven nodejs && apt clean RUN npm install -g @angular/cli ENV WORKSPACE=/opt/workspace ENV JARFILE=java-server.jar RUN mkdir $WORKSPACE WORKDIR "$WORKSPACE" ADD workspace.tgz $WORKSPACE RUN cd $WORKSPACE RUN ng config -g cli.warnings.versionMismatch false RUN cd angular-front && npm i && node --max-old- space-size=7000 /usr/bin/ng build --prod RUN cd angular-front/dist/angular-front && tar cvfz "${WORKSPACE}/angular-front.tgz" * #Linea para servir el front desde java RUN cd java_server/src/main/resources/static && tar xfz "${WORKSPACE}/angular-front.tgz" RUN cd java_server && mvn package -DskipTests=true && mv target/*.jar ../${JARFILE} Continua Building
  • 22. Building + Distribution II FROM ubuntu:18.04 as executor LABEL vendor="Quality Objects" description="App runtime" RUN apt update -y && apt install -y curl openjdk-11-jre-headless && apt clean ENV PORT=8080 ENV DB_HOST=localhost ENV DB_NAME=mydb ENV DB_USER=user1 ENV DB_PASSWORD=pass_user1 ENV JARFILE=java-server.jar RUN mkdir /opt/app WORKDIR /opt/app EXPOSE ${PORT} COPY --from=builder /opt/workspace/${JARFILE} ${JARFILE} ENTRYPOINT ["bash", "-c" ] CMD ["/usr/bin/java -jar ${JARFILE} -- port=${PORT} --db-host=${DB_HOST} --db- name=${DB_NAME} --db-user=${DB_USER} --db- password=${DB_PASSWORD}"] DistributionSigue
  • 23. . 8. Ecosistema Docker, mucho más que un conjunto de herramientas
  • 24. Momentum Crecimiento de manera casi exponencial en apenas unos pocos años 2018 Fuente: https://blog.docker.com/2018/03/5-years-later-docker-journey/
  • 25. Acceso centralizado (Docker HUB) a imágenes de todo tipo de backends y aplicaciones para su uso en local o en entornos de producción Resumen Docker Entorno “sandbox” para probar nuevas tecnologías Herramienta para construir y distribuir nuestras aplicaciones independientemente del tipo de entorno (Docker-compose, Kubernetes, …) o tipo de nube (Amazon, Azure, Google Cloud, …) Herramienta para pruebas de integración
  • 26. Estandarización despliegue. Ventajas Multiplataforma. Mejor aprovechamiento del HW entornos de producción, frente a virtualización tradicional. Facilita el upgrade (re-despliegue) de aplicaciones y el rollback. Facilita probar nuevas tecnologías sin “ensuciar” el entorno local. Facilita procesos CI/CD.
  • 27. . 9. Docker compose Introducción despliegue y gestión básica
  • 28. Introducción ¿Qué es Docker- compose? Despliegue de sistemas con múltiples contenedores Instalación habitual en single- node Ventajas frente a otras soluciones de orquestación
  • 29. Despliegue de aplicación Aplicación con 2 o más contenedores Gestión integral del sistema desplegado Definición de variables de entorno y volúmenes Fichero descriptor: docker-compose.yml
  • 30. docker-compose.yml version: '3.7' services: service1: container_name: service1 image: imagename:tag restart: unless-stopped volumes: - my-data:/…/data ports: - xxxx:xxxx healthcheck: service2: … volumes: my-data: external: docker-vol-name
  • 31. Ejemplo Docker-compose.yml version: '3' services: h3lp3r-db: container_name: h3lp3r-db image: postgres:11 restart: unless-stopped volumes: - "/opt/volumes/h3lp3r- db:/var/lib/postgresql/data" ports: - 127.0.0.1:5432:5432 healthcheck: test: ["CMD", "/usr/bin/pg_isready"] interval: 1m timeout: 2s retries: 5 h3lp3r-front: container_name: h3lp3r-front image: qualityobjects/h3lp3r- front:latest restart: unless-stopped ports: - 127.0.0.1:1080:80 adminer: container_name: adminer image: adminer:latest restart: always ports: - 8181:8080 h3lp3r-back: container_name: h3lp3r-back image: qualityobjects/h3lp3r- back:latest restart: unless-stopped environment: PORT: 8080 DB_HOST: h3lp3r-db DB_NAME: h3lp3r DB_USER: h3lp3r DB_PASSWORD: h3lp3r ports: - 127.0.0.1:8080:8080 depends_on: - h3lp3r-db
  • 32. Gestión básica Herramienta: docker-compose Listado de sistemas desplegados Parar-arrancar sistemas completos y contenedores específicos Acceso a contenedores y logs
  • 33. Comandos habituales Listar servicios docker-compose ps Lanzar aplicación docker-compose up -d Reiniciar servicios docker-compose restart Mostrar logs (todos los servicios) docker-compose logs -f Eliminar servicios (conten.) docker-compose rm
  • 34. Recursos Repositorios GIT de la app https://gitlab.com/qo-oss/h3lp3r Repositorio Docker con imágenes de la app https://hub.docker.com/u/qualityobjects Resumen de comandos https://gitlab.com/qo-oss/h3lp3r/h3lp3r- back/tree/master/etc/meetup