SlideShare une entreprise Scribd logo
1  sur  38
Introducción a Docker
Escuela Técnica Superior de
Ingenieros de Telecomunicación
(UPM) @ Madrid (Spain)
Global Mentor Day @
UPM. Miércoles 16 de
noviembre de 2016
About me: Ignacio Vaquero
● Licenciado en Ingeniería de Telecomunicación por la ETSIT UPM
● Actualmente Ingeniero DevOps en DATIO Big Data
● Anteriormente he trabajado también como DevOps en bq
● Trabajando con Docker algo más de 1 año
● Contacto:
ivaquero@datiobd.com
@igvaquero18
@igvaquero18
#LearnDocker
About me: Ángel Barrera Sánchez
● Ingeniero de Software en BEEVA @ BBVA.
● He trabajado en consultoras grandes y startups.
● Actualmente estamos adaptando una arquitectura monolítica SOAP hacia
Microservicios restful.
● Contacto:
angel.barrera@beeva.com
@angelbarrera92
@angelbarrera92
#LearnDocker
Índice
● Instalación Docker y Docker Compose
● Nuestro primer contenedor
● Desplegando una aplicación web con Docker
● Docker Compose: Aplicación completa de votos
#LearnDocker
Instalación
● Instalación Docker y Docker Compose
○ Docker: Linux, macOS, Windows
○ Docker Compose
○ Editor de texto (Opcional)
● Nuestro primer contenedor
● Desplegando una aplicación web con Docker
● Docker Compose: Aplicación completa de votos
#LearnDocker
https://github.com/docker/labs/tree/master/beginner
Instalación: Docker
● Linux
○ The Hard Way: https://docs.docker.com/engine/installation/linux/
○ The Easy Way: Lanzar comando en shell: https://get.docker.com
● macOS y Windows
○ Docker for Mac o Docker for Windows
○ ALTERNATIVA: Docker Toolbox (para equipos/SO antiguos).
#LearnDocker
Instalación: Docker compose
● Linux
○ The Hard Way: https://docs.docker.com/compose/install/
○ The Python way:
■ $ pip install docker-compose
○ The bash way:
■ $ curl -L
"https://github.com/docker/compose/releases/download/1.8.1/docke
r-compose-$(uname -s)-$(uname -m)" >
/usr/local/bin/docker-compose
■ $ chmod +x /usr/local/bin/docker-compose
● macOS y Windows
○ Docker toolbox ya incorpora docker compose #LearnDocker
Instalación: Docker
● ¿Por qué tengo que poner sudo?
https://docs.docker.com/engine/installation/linux/ubuntulinux/#/create-a-docker-group
#LearnDocker
Instalación: Hola mundo
● Hello World!
docker run hello-world
#LearnDocker
Instalación: Editor de texto (Opcional)
● Editor de texto:
○ Atom: https://atom.io
○ Sublime: https://www.sublimetext.com
○ Visual Studio: https://www.visualstudio.com/es/
#LearnDocker
Nuestro primer contenedor
● Instalación Docker y Docker Compose
● Nuestro primer contenedor
● Desplegando una aplicación web con Docker
● Docker Compose: Aplicación completa de votos
#LearnDocker
Repositorio de imágenes - Docker Hub
● Docker Hub es un servicio de registro
basado en la nube para crear y
entregar contenedores de servicio o
aplicaciones.
● Provee un recurso centralizado para
el descubrimiento de contenedores,
distribución, control de cambios,
colaboración de equipos y
automatización de flujos de trabajo
#LearnDocker
Descargando la imagen
● Imagen: Alpine Linux
○ docker pull alpine : Bajamos la imagen del Docker Hub.
● Una imagen es el sistema de ficheros y configuración que se usa para lanzar uno o varios
contenedores. Un contenedor es una instancia de una imagen en ejecución.
● Un usuario puede crear una imagen con un programa ejecutable y subirla al Docker Hub.
● Otro usuario puede descargar la imagen y lanzar un contenedor basado en esa imagen, de manera
que se ejecute el programa dentro del contenedor.
● La imagen es como una plantilla para ejecutar contenedores idénticos.
● docker images : Listado de imágenes descargadas en nuestro ordenador.
#LearnDocker
Lanzando contenedores
docker run alpine ls -l
Invocamos
el cliente de
Docker
Ejecutamos el
comando run de
Docker, que lanza un
contenedor en nuestro
ordenador basándose
en una imagen
Nombre de la
imagen que
queremos lanzar
Comando que
lanzamos dentro
del contenedor
(programa +
argumentos)
#LearnDocker
Lanzando contenedores
● Otros comandos:
○ docker run alpine echo hello from alpine
○ docker run alpine /bin/sh
○ docker run -it alpine /bin/sh
■ ls -l
■ uname -a
■ ...
■ exit
○ docker ps -a
○ docker run --help #LearnDocker
○ docker kill $(docker ps -aq)
○ docker rm $(docker ps -aq)
Otros
comandos
#LearnDocker
docker --help
Terminología
● Images - The file system and configuration of our application which are used to create containers. To find out more
about a Docker image, run docker inspect alpine. In the demo above, you used the docker pull command to
download the alpine image. When you executed the command docker run hello-world, it also did a docker pull
behind the scenes to download the hello-world image.
● Containers - Running instances of Docker images — containers run the actual applications. A container includes an
application and all of its dependencies. It shares the kernel with other containers, and runs as an isolated process in
user space on the host OS. You created a container using docker run which you did using the alpine image that you
downloaded. A list of running containers can be seen using the docker ps command.
● Docker daemon - The background service running on the host that manages building, running and distributing
Docker containers.
● Docker client - The command line tool that allows the user to interact with the Docker daemon.
● Docker Hub - A registry of Docker images. You can think of the registry as a directory of all available Docker
images. You'll be using this later in this tutorial.
#LearnDocker
Aplicación web dockerizada (Random Kittens Web App)
● Instalación Docker y Docker Compose
● Nuestro primer contenedor
● Desplegando una aplicación web con Docker
● Docker Compose: Aplicación completa de votos
#LearnDocker
Aplicación web dockerizada (Random Kittens Web App)
● Objetivo:
Crearemos una aplicación web
escrita en python con flask, la
dockerizaremos escribiendo un
Dockerfile y la ejecutaremos en
nuestros PCs.
El resultado, una web con gifs
aleatorio de gatitos
#LearnDocker
Aplicación web dockerizada (Random Kittens Web App)
● Pasos:
○ Todo el tutorial está en:
■ https://github.com/docker/labs/blob/master/beginner/chapters/webapps.md#23-create-your-first-image
○ El código fuente lo encontramos en:
■ https://github.com/docker/labs/tree/master/beginner/flask-app
#LearnDocker
Labo time!
https://goo.gl/XQvAjX
#LearnDocker
Ojo. A partir del punto 2.3
Aplicación web dockerizada (Random Kittens Web App)
● Análisis del Dockerfile:
#LearnDocker
FROM: Indica la imagen base a utilizar.
RUN: Ejecución de comandos. Añade el gestor de paquetes
de python y lo actualiza.
COPY: Inserta ficheros desde el host hasta la imagen. En
este caso el fichero de requisitos de python.
RUN: Ejecución de la instalación de los requisitos de
python.
COPY: Añade la aplicación y la plantilla HTML.
EXPOSE: Expone el puerto que se va a utilizar para que
salga del contenedor y sea accesible desde nuestro host.
CMD: Comando de arranque del contenedor.
Aplicación web dockerizada (Random Kittens Web App)
● Build de la imagen
#LearnDocker
El comando docker build es bastante simple, coge de forma opcional una etiqueta con el
flag/argumento -t y el directorio que contiene el Dockerfile como último argumento posicional (‘.’ =
directorio actual)
$ docker build -t learndocker/myfirstapp .
Aplicación web dockerizada (Random Kittens Web App)
● Ejecución del contenedor
#LearnDocker
El último paso de esta sección es ejecutar la imagen y ver si realmente funciona.
$ docker run -p 8888:5000 --name myfirstapp learndocker/myfirstapp
Abrid el navegador y comprobad que la aplicación se ejecuta correctamente:
http://localhost:8888
Pulsad F5 para ver mas gifs de Gatitos
● Parada del contenedor
$ docker stop myfirstapp
$ docker rm myfirstapp
$ docker rm -f myfirstappO
Aplicación completa de votos
● Instalación Docker y Docker Compose
● Nuestro primer contenedor
● Desplegando una aplicación web con Docker
● Docker Compose: Aplicación completa de votos
#LearnDocker
Aplicación completa de votos
● Objetivo: Crear una aplicación de votos basada
en microservicios
● Los microservicios son múltiples contenedores
de Docker que cumplen una única función y
colaboran entre ellos para lograr un objetivo
común.
● Pueden ser de diversas tecnologías (Node,
Python, .Net) y se comunican a través de redes
de Docker.
● Docker Compose nos permite definir y
ejecutar una aplicación multi-contenedor.
#LearnDocker
Esquema Docker Compose
docker-compose up -d
#LearnDocker
Requisitos
● docker-compose version > 1.6
● Utilizaremos la versión 2 del formato Docker Compose que
introduce nuevas abstracciones:
○ Servicios
○ Volúmenes
○ Redes
● Git: https://git-scm.com/downloads
#LearnDocker
Redes en Docker
● Permiten comunicación entre todos los contenedores pertenecientes a dicha red, a través del
nombre del contenedor y sin necesidad de exponer puertos.
● Permiten aislamiento con los contenedores no pertenecientes a dicha red.
● Un contenedor puede pertenecer a una o más redes, y comunicarse con todos los contenedores
de todas las redes a las que pertenezca.
docker network create miRed
docker network ls
docker run -d --name wordpress --net miRed wordpress
docker run -d --name mysql --net miRed mysql
docker network inspect miRed
#LearnDocker
Volúmenes en Docker
● Permiten persistencia de información del contenedor.
● Se montan en un path específico del contenedor (por ejemplo, /var/lib/mysql).
● Puede crearse un volumen nuevo...
● O puede montarse un directorio de nuestro PC en el contenedor...
docker volume create miVol
docker run -d -v miVol:/var/lib/mysql mysql:latest
docker run -d -v $(pwd)/db:/var/lib/mysql mysql:latest
● En este último caso, la información creada y modificada en el contenedor se refleja en el directorio
de nuestro PC y viceversa.
mi directorio El directorio en
el contenedor
#LearnDocker
Docker Compose
● Ejemplo de aplicación:
○ Wordpress con BBDD MySQL
○ Se comunican por una red llamada
wordpress_net
○ MySQL monta un volumen llamado data en el
directorio /var/lib/mysql del contenedor.
○ Se pueden pasar variables de entorno globales
al contenedor (útil para setear configuración).
● Código:
○ https://github.com/igvaquero18/MentorDay-examples
#LearnDocker
Labo time!
https://goo.gl/jdkFvL
#LearnDocker
Desde el punto 3.1 hasta
el 3.2.3 (ambos incluídos).
Challenge
#LearnDocker
Solo un voto por sesión.
¿Alguien puede
solucionarlo?
Solución
● Reseteamos la cookie que guarda nuestro voto en el fichero app.py:
Challenge
Cambiar las opciones
disponibles en la
votación… Sólo con
Docker Compose!
Solución
● En el fichero app.py, se leen las opciones disponibles
de dos variables de entorno llamadas OPTION_A y
OPTION_B. Las seteamos en el fichero
docker-compose.yml
Preguntas
#LearnDocker
Nuevo training site oficial
http://training.docker.com/category/docker-mentor-week
#LearnDocker

Contenu connexe

Tendances

Tendances (20)

Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
What is Docker
What is DockerWhat is Docker
What is Docker
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
 
Docker Tutorial.pdf
Docker Tutorial.pdfDocker Tutorial.pdf
Docker Tutorial.pdf
 
Docker, Docker Compose and Docker Swarm
Docker, Docker Compose and Docker SwarmDocker, Docker Compose and Docker Swarm
Docker, Docker Compose and Docker Swarm
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
AWS CodeDeploy
AWS CodeDeployAWS CodeDeploy
AWS CodeDeploy
 
Cómo empezar con Amazon EKS
Cómo empezar con Amazon EKSCómo empezar con Amazon EKS
Cómo empezar con Amazon EKS
 
Getting Started with Infrastructure as Code
Getting Started with Infrastructure as CodeGetting Started with Infrastructure as Code
Getting Started with Infrastructure as Code
 
Docker in real life
Docker in real lifeDocker in real life
Docker in real life
 
Code Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherCode Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et Rancher
 
Docker & kubernetes
Docker & kubernetesDocker & kubernetes
Docker & kubernetes
 
Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17Hands-On Introduction to Kubernetes at LISA17
Hands-On Introduction to Kubernetes at LISA17
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
 
Introduce to Terraform
Introduce to TerraformIntroduce to Terraform
Introduce to Terraform
 
Docker Networking Overview
Docker Networking OverviewDocker Networking Overview
Docker Networking Overview
 
Docker
DockerDocker
Docker
 
Kubernetes Interview Questions And Answers | Kubernetes Tutorial | Kubernetes...
Kubernetes Interview Questions And Answers | Kubernetes Tutorial | Kubernetes...Kubernetes Interview Questions And Answers | Kubernetes Tutorial | Kubernetes...
Kubernetes Interview Questions And Answers | Kubernetes Tutorial | Kubernetes...
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 intro
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 

En vedette

Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
Gustavo Andres Brey
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to Docker
Docker, Inc.
 
Why Docker
Why DockerWhy Docker
Why Docker
dotCloud
 

En vedette (20)

Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
 
Seminario: Docker y su Ecosistema
Seminario: Docker y su EcosistemaSeminario: Docker y su Ecosistema
Seminario: Docker y su Ecosistema
 
introducción a Docker
introducción a Dockerintroducción a Docker
introducción a Docker
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Docker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 Huancayo
 
BEEVA | Crear bots avanzados
BEEVA | Crear bots avanzadosBEEVA | Crear bots avanzados
BEEVA | Crear bots avanzados
 
BEEVA | Diseño UX para chatbots
BEEVA | Diseño UX para chatbotsBEEVA | Diseño UX para chatbots
BEEVA | Diseño UX para chatbots
 
Docker Online Meetup: Announcing Docker CE + EE
Docker Online Meetup: Announcing Docker CE + EEDocker Online Meetup: Announcing Docker CE + EE
Docker Online Meetup: Announcing Docker CE + EE
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
Arquitecturas de microservicios - Codemotion 2014
Arquitecturas de microservicios  -  Codemotion 2014Arquitecturas de microservicios  -  Codemotion 2014
Arquitecturas de microservicios - Codemotion 2014
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
 
JustGiving | Serverless Data Pipelines, API, Messaging and Stream Processing
JustGiving | Serverless Data Pipelines, API, Messaging and Stream ProcessingJustGiving | Serverless Data Pipelines, API, Messaging and Stream Processing
JustGiving | Serverless Data Pipelines, API, Messaging and Stream Processing
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to Docker
 
Devopsconf2015- Marcos y Jonathan Mantika
Devopsconf2015- Marcos y Jonathan MantikaDevopsconf2015- Marcos y Jonathan Mantika
Devopsconf2015- Marcos y Jonathan Mantika
 
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...
 
nerdear.la 2016 - Docker workshop
nerdear.la 2016 - Docker workshopnerdear.la 2016 - Docker workshop
nerdear.la 2016 - Docker workshop
 
Introducció a Docker
Introducció a DockerIntroducció a Docker
Introducció a Docker
 
A Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things ContainersA Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things Containers
 
Why Docker
Why DockerWhy Docker
Why Docker
 

Similaire à BEEVA | Introducción a Docker

Similaire à BEEVA | Introducción a Docker (20)

Jug málaga docker 101 - final
Jug málaga   docker 101 - finalJug málaga   docker 101 - final
Jug málaga docker 101 - final
 
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
 
Docker and networking
Docker and networkingDocker and networking
Docker and networking
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacion
 
TECNIRIS47-1b.pdf
TECNIRIS47-1b.pdfTECNIRIS47-1b.pdf
TECNIRIS47-1b.pdf
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJC
 
Curso gratuito de Docker
Curso gratuito de DockerCurso gratuito de Docker
Curso gratuito de Docker
 
Docker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos AiresDocker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos Aires
 
Dockerparadesarrollo
DockerparadesarrolloDockerparadesarrollo
Dockerparadesarrollo
 
Introduction to docker. Stratio
Introduction to docker. StratioIntroduction to docker. Stratio
Introduction to docker. Stratio
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetes
 
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]
 
Docker4developers Codemotion2016
Docker4developers Codemotion2016Docker4developers Codemotion2016
Docker4developers Codemotion2016
 
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
 
Docker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJCDocker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJC
 
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
 
Docker images
Docker imagesDocker images
Docker images
 
Dockers y wp
Dockers y wpDockers y wp
Dockers y wp
 

Plus de BEEVA_es

Plus de BEEVA_es (20)

BEEVA | The reality of IoT as of today
BEEVA | The reality of IoT as of todayBEEVA | The reality of IoT as of today
BEEVA | The reality of IoT as of today
 
BEEVA | Ruling the world galaxy with your voice and the cloud
 BEEVA | Ruling the world galaxy with your voice and the cloud BEEVA | Ruling the world galaxy with your voice and the cloud
BEEVA | Ruling the world galaxy with your voice and the cloud
 
WORKSHOP II: API REST
WORKSHOP II: API RESTWORKSHOP II: API REST
WORKSHOP II: API REST
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API REST
 
[API Days] Cooking with apis
[API Days] Cooking with apis[API Days] Cooking with apis
[API Days] Cooking with apis
 
Como ganar un hackathon
Como ganar un hackathonComo ganar un hackathon
Como ganar un hackathon
 
Bases de Datos No Relacionales
Bases de Datos No RelacionalesBases de Datos No Relacionales
Bases de Datos No Relacionales
 
Curso de Responsive Web Design de BEEVA
Curso de Responsive Web Design de BEEVACurso de Responsive Web Design de BEEVA
Curso de Responsive Web Design de BEEVA
 
Push comercial ANS BEEVA v1.0
Push comercial ANS BEEVA v1.0Push comercial ANS BEEVA v1.0
Push comercial ANS BEEVA v1.0
 
Desmitificando un proyecto de Big Data
Desmitificando un proyecto de Big DataDesmitificando un proyecto de Big Data
Desmitificando un proyecto de Big Data
 
Cómo empezar a implementar proyectos Big Data en tu organización
Cómo empezar a implementar proyectos Big Data en tu organizaciónCómo empezar a implementar proyectos Big Data en tu organización
Cómo empezar a implementar proyectos Big Data en tu organización
 
Hadoop en la nube: ETL a ELT
Hadoop en la nube: ETL a ELT Hadoop en la nube: ETL a ELT
Hadoop en la nube: ETL a ELT
 
Siete "consejos" para abordar un proyecto con tecnologías Big Data
Siete "consejos" para abordar un proyecto con tecnologías Big DataSiete "consejos" para abordar un proyecto con tecnologías Big Data
Siete "consejos" para abordar un proyecto con tecnologías Big Data
 
Bases de Datos no relacionales
Bases de Datos no relacionalesBases de Datos no relacionales
Bases de Datos no relacionales
 
Data Platform de BEEVA
Data Platform de BEEVAData Platform de BEEVA
Data Platform de BEEVA
 
Gestión del software con Maven y Jenkins
Gestión del software con Maven y JenkinsGestión del software con Maven y Jenkins
Gestión del software con Maven y Jenkins
 
El presente del mundo del retail
El presente del mundo del retailEl presente del mundo del retail
El presente del mundo del retail
 
El presente del mundo telco
El presente del mundo telcoEl presente del mundo telco
El presente del mundo telco
 
Modelos de datos relacionales y no relacionales
Modelos de datos relacionales y no relacionalesModelos de datos relacionales y no relacionales
Modelos de datos relacionales y no relacionales
 
Analítica nueva generacion y BD aplicado a los sistemas informacionales
Analítica nueva generacion y BD aplicado a los sistemas informacionalesAnalítica nueva generacion y BD aplicado a los sistemas informacionales
Analítica nueva generacion y BD aplicado a los sistemas informacionales
 

Dernier

LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
bcondort
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
gustavoiashalom
 

Dernier (20)

Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
Presentación Instrumentos de Medicion Electricos.pptx
Presentación Instrumentos de Medicion Electricos.pptxPresentación Instrumentos de Medicion Electricos.pptx
Presentación Instrumentos de Medicion Electricos.pptx
 
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptTippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf  PARA TRABAJO SEGUROATS-FORMATO cara.pdf  PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo process
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdfAnálisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
Análisis_y_Diseño_de_Estructuras_con_SAP_2000,_5ta_Edición_ICG.pdf
 
Presentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónPresentacion de la ganaderia en la región
Presentacion de la ganaderia en la región
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
ingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptx
 
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVOESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
ESPECIFICACIONES TECNICAS COMPLEJO DEPORTIVO
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
 
Matrices Matemáticos universitario pptx
Matrices  Matemáticos universitario pptxMatrices  Matemáticos universitario pptx
Matrices Matemáticos universitario pptx
 
Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 

BEEVA | Introducción a Docker

  • 1. Introducción a Docker Escuela Técnica Superior de Ingenieros de Telecomunicación (UPM) @ Madrid (Spain) Global Mentor Day @ UPM. Miércoles 16 de noviembre de 2016
  • 2. About me: Ignacio Vaquero ● Licenciado en Ingeniería de Telecomunicación por la ETSIT UPM ● Actualmente Ingeniero DevOps en DATIO Big Data ● Anteriormente he trabajado también como DevOps en bq ● Trabajando con Docker algo más de 1 año ● Contacto: ivaquero@datiobd.com @igvaquero18 @igvaquero18 #LearnDocker
  • 3. About me: Ángel Barrera Sánchez ● Ingeniero de Software en BEEVA @ BBVA. ● He trabajado en consultoras grandes y startups. ● Actualmente estamos adaptando una arquitectura monolítica SOAP hacia Microservicios restful. ● Contacto: angel.barrera@beeva.com @angelbarrera92 @angelbarrera92 #LearnDocker
  • 4. Índice ● Instalación Docker y Docker Compose ● Nuestro primer contenedor ● Desplegando una aplicación web con Docker ● Docker Compose: Aplicación completa de votos #LearnDocker
  • 5. Instalación ● Instalación Docker y Docker Compose ○ Docker: Linux, macOS, Windows ○ Docker Compose ○ Editor de texto (Opcional) ● Nuestro primer contenedor ● Desplegando una aplicación web con Docker ● Docker Compose: Aplicación completa de votos #LearnDocker https://github.com/docker/labs/tree/master/beginner
  • 6. Instalación: Docker ● Linux ○ The Hard Way: https://docs.docker.com/engine/installation/linux/ ○ The Easy Way: Lanzar comando en shell: https://get.docker.com ● macOS y Windows ○ Docker for Mac o Docker for Windows ○ ALTERNATIVA: Docker Toolbox (para equipos/SO antiguos). #LearnDocker
  • 7. Instalación: Docker compose ● Linux ○ The Hard Way: https://docs.docker.com/compose/install/ ○ The Python way: ■ $ pip install docker-compose ○ The bash way: ■ $ curl -L "https://github.com/docker/compose/releases/download/1.8.1/docke r-compose-$(uname -s)-$(uname -m)" > /usr/local/bin/docker-compose ■ $ chmod +x /usr/local/bin/docker-compose ● macOS y Windows ○ Docker toolbox ya incorpora docker compose #LearnDocker
  • 8. Instalación: Docker ● ¿Por qué tengo que poner sudo? https://docs.docker.com/engine/installation/linux/ubuntulinux/#/create-a-docker-group #LearnDocker
  • 9. Instalación: Hola mundo ● Hello World! docker run hello-world #LearnDocker
  • 10. Instalación: Editor de texto (Opcional) ● Editor de texto: ○ Atom: https://atom.io ○ Sublime: https://www.sublimetext.com ○ Visual Studio: https://www.visualstudio.com/es/ #LearnDocker
  • 11. Nuestro primer contenedor ● Instalación Docker y Docker Compose ● Nuestro primer contenedor ● Desplegando una aplicación web con Docker ● Docker Compose: Aplicación completa de votos #LearnDocker
  • 12. Repositorio de imágenes - Docker Hub ● Docker Hub es un servicio de registro basado en la nube para crear y entregar contenedores de servicio o aplicaciones. ● Provee un recurso centralizado para el descubrimiento de contenedores, distribución, control de cambios, colaboración de equipos y automatización de flujos de trabajo #LearnDocker
  • 13. Descargando la imagen ● Imagen: Alpine Linux ○ docker pull alpine : Bajamos la imagen del Docker Hub. ● Una imagen es el sistema de ficheros y configuración que se usa para lanzar uno o varios contenedores. Un contenedor es una instancia de una imagen en ejecución. ● Un usuario puede crear una imagen con un programa ejecutable y subirla al Docker Hub. ● Otro usuario puede descargar la imagen y lanzar un contenedor basado en esa imagen, de manera que se ejecute el programa dentro del contenedor. ● La imagen es como una plantilla para ejecutar contenedores idénticos. ● docker images : Listado de imágenes descargadas en nuestro ordenador. #LearnDocker
  • 14. Lanzando contenedores docker run alpine ls -l Invocamos el cliente de Docker Ejecutamos el comando run de Docker, que lanza un contenedor en nuestro ordenador basándose en una imagen Nombre de la imagen que queremos lanzar Comando que lanzamos dentro del contenedor (programa + argumentos) #LearnDocker
  • 15. Lanzando contenedores ● Otros comandos: ○ docker run alpine echo hello from alpine ○ docker run alpine /bin/sh ○ docker run -it alpine /bin/sh ■ ls -l ■ uname -a ■ ... ■ exit ○ docker ps -a ○ docker run --help #LearnDocker ○ docker kill $(docker ps -aq) ○ docker rm $(docker ps -aq)
  • 17. Terminología ● Images - The file system and configuration of our application which are used to create containers. To find out more about a Docker image, run docker inspect alpine. In the demo above, you used the docker pull command to download the alpine image. When you executed the command docker run hello-world, it also did a docker pull behind the scenes to download the hello-world image. ● Containers - Running instances of Docker images — containers run the actual applications. A container includes an application and all of its dependencies. It shares the kernel with other containers, and runs as an isolated process in user space on the host OS. You created a container using docker run which you did using the alpine image that you downloaded. A list of running containers can be seen using the docker ps command. ● Docker daemon - The background service running on the host that manages building, running and distributing Docker containers. ● Docker client - The command line tool that allows the user to interact with the Docker daemon. ● Docker Hub - A registry of Docker images. You can think of the registry as a directory of all available Docker images. You'll be using this later in this tutorial. #LearnDocker
  • 18. Aplicación web dockerizada (Random Kittens Web App) ● Instalación Docker y Docker Compose ● Nuestro primer contenedor ● Desplegando una aplicación web con Docker ● Docker Compose: Aplicación completa de votos #LearnDocker
  • 19. Aplicación web dockerizada (Random Kittens Web App) ● Objetivo: Crearemos una aplicación web escrita en python con flask, la dockerizaremos escribiendo un Dockerfile y la ejecutaremos en nuestros PCs. El resultado, una web con gifs aleatorio de gatitos #LearnDocker
  • 20. Aplicación web dockerizada (Random Kittens Web App) ● Pasos: ○ Todo el tutorial está en: ■ https://github.com/docker/labs/blob/master/beginner/chapters/webapps.md#23-create-your-first-image ○ El código fuente lo encontramos en: ■ https://github.com/docker/labs/tree/master/beginner/flask-app #LearnDocker
  • 22. Aplicación web dockerizada (Random Kittens Web App) ● Análisis del Dockerfile: #LearnDocker FROM: Indica la imagen base a utilizar. RUN: Ejecución de comandos. Añade el gestor de paquetes de python y lo actualiza. COPY: Inserta ficheros desde el host hasta la imagen. En este caso el fichero de requisitos de python. RUN: Ejecución de la instalación de los requisitos de python. COPY: Añade la aplicación y la plantilla HTML. EXPOSE: Expone el puerto que se va a utilizar para que salga del contenedor y sea accesible desde nuestro host. CMD: Comando de arranque del contenedor.
  • 23. Aplicación web dockerizada (Random Kittens Web App) ● Build de la imagen #LearnDocker El comando docker build es bastante simple, coge de forma opcional una etiqueta con el flag/argumento -t y el directorio que contiene el Dockerfile como último argumento posicional (‘.’ = directorio actual) $ docker build -t learndocker/myfirstapp .
  • 24. Aplicación web dockerizada (Random Kittens Web App) ● Ejecución del contenedor #LearnDocker El último paso de esta sección es ejecutar la imagen y ver si realmente funciona. $ docker run -p 8888:5000 --name myfirstapp learndocker/myfirstapp Abrid el navegador y comprobad que la aplicación se ejecuta correctamente: http://localhost:8888 Pulsad F5 para ver mas gifs de Gatitos ● Parada del contenedor $ docker stop myfirstapp $ docker rm myfirstapp $ docker rm -f myfirstappO
  • 25. Aplicación completa de votos ● Instalación Docker y Docker Compose ● Nuestro primer contenedor ● Desplegando una aplicación web con Docker ● Docker Compose: Aplicación completa de votos #LearnDocker
  • 26. Aplicación completa de votos ● Objetivo: Crear una aplicación de votos basada en microservicios ● Los microservicios son múltiples contenedores de Docker que cumplen una única función y colaboran entre ellos para lograr un objetivo común. ● Pueden ser de diversas tecnologías (Node, Python, .Net) y se comunican a través de redes de Docker. ● Docker Compose nos permite definir y ejecutar una aplicación multi-contenedor. #LearnDocker
  • 28. Requisitos ● docker-compose version > 1.6 ● Utilizaremos la versión 2 del formato Docker Compose que introduce nuevas abstracciones: ○ Servicios ○ Volúmenes ○ Redes ● Git: https://git-scm.com/downloads #LearnDocker
  • 29. Redes en Docker ● Permiten comunicación entre todos los contenedores pertenecientes a dicha red, a través del nombre del contenedor y sin necesidad de exponer puertos. ● Permiten aislamiento con los contenedores no pertenecientes a dicha red. ● Un contenedor puede pertenecer a una o más redes, y comunicarse con todos los contenedores de todas las redes a las que pertenezca. docker network create miRed docker network ls docker run -d --name wordpress --net miRed wordpress docker run -d --name mysql --net miRed mysql docker network inspect miRed #LearnDocker
  • 30. Volúmenes en Docker ● Permiten persistencia de información del contenedor. ● Se montan en un path específico del contenedor (por ejemplo, /var/lib/mysql). ● Puede crearse un volumen nuevo... ● O puede montarse un directorio de nuestro PC en el contenedor... docker volume create miVol docker run -d -v miVol:/var/lib/mysql mysql:latest docker run -d -v $(pwd)/db:/var/lib/mysql mysql:latest ● En este último caso, la información creada y modificada en el contenedor se refleja en el directorio de nuestro PC y viceversa. mi directorio El directorio en el contenedor #LearnDocker
  • 31. Docker Compose ● Ejemplo de aplicación: ○ Wordpress con BBDD MySQL ○ Se comunican por una red llamada wordpress_net ○ MySQL monta un volumen llamado data en el directorio /var/lib/mysql del contenedor. ○ Se pueden pasar variables de entorno globales al contenedor (útil para setear configuración). ● Código: ○ https://github.com/igvaquero18/MentorDay-examples #LearnDocker
  • 32. Labo time! https://goo.gl/jdkFvL #LearnDocker Desde el punto 3.1 hasta el 3.2.3 (ambos incluídos).
  • 33. Challenge #LearnDocker Solo un voto por sesión. ¿Alguien puede solucionarlo?
  • 34. Solución ● Reseteamos la cookie que guarda nuestro voto en el fichero app.py:
  • 35. Challenge Cambiar las opciones disponibles en la votación… Sólo con Docker Compose!
  • 36. Solución ● En el fichero app.py, se leen las opciones disponibles de dos variables de entorno llamadas OPTION_A y OPTION_B. Las seteamos en el fichero docker-compose.yml
  • 38. Nuevo training site oficial http://training.docker.com/category/docker-mentor-week #LearnDocker