Docker y todo eso... más o menos
-
Upload
eduard-tomas -
Category
Software
-
view
65 -
download
3
Transcript of Docker y todo eso... más o menos
![Page 1: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/1.jpg)
#PlainConceptsTechDay
20.12.2017
Plain Concepts
Tech Day
Eduard Tomàs
Docker y todo eso… más o
menos
RANDOM KEY PRESS DEVELOPER
![Page 2: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/2.jpg)
#PlainConceptsTechDay2
9:00 – 9:45 CSS Grid Layout - ¡Se acabaron los hacks, larga vida al CSS!
9:45 - 10:30 Desarrollo de aplicaciones multiplataforma utilizando Xamarin
10:30 - 11:15 Docker: de principante a pro
11:15 - 11:25 ¿Qué es la Fundación Theodora?
11:25 - 11:45 Break
11:45 - 12:30 Los autobuses de madrid en tiempo real con Azure Relay, .Net Core y una Raspberry Pi
12:30 - 13:15 Swagger Code Generation: Cuando front encontró a back
13:15 - 14:00 Entrega contínua con Visual Studio Team Services
Plain
Concepts
Tech Day
![Page 3: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/3.jpg)
#PlainConceptsTechDay3
9:00 – 9:45 CSS Grid Layout - ¡Se acabaron los hacks, larga vida al CSS!
9:45 - 10:30 Desarrollo de aplicaciones multiplataforma utilizando Xamarin
10:30 - 11:15 Docker: de principante a pro
11:15 - 11:25 ¿Qué es la Fundación Theodora?
11:25 - 11:45 Break
11:45 - 12:30 Los autobuses de madrid en tiempo real con Azure Relay, .Net Core y una Raspberry Pi
12:30 - 13:15 Swagger Code Generation: Cuando front encontró a back
13:15 - 14:00 Entrega contínua con Visual Studio Team Services
Plain
Concepts
Tech Day
![Page 4: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/4.jpg)
Dockerfile
FROM speaker:2017
WORKDIR /PlainConceptsTechDay
ENV twitter=@eiximenis company=“Plain Concepts”
COPY ./talks/2017/docker/ppt-and-code .
USER Eduard.Tomàs
ADD ./microsoft-mvp ./awards
HEALTHCHECK cat last-1h-drinks.txt | grep beer
ENTRYPOINT [“dotnet”, “docker-talk.dll”]
![Page 5: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/5.jpg)
Qué veremos
#PlainConceptsTechDay 5
![Page 6: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/6.jpg)
#PlainConceptsTechDay 6
Contenedores… ¿qué son?
![Page 7: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/7.jpg)
@plainconcepts
#PlainConceptsTechDay
![Page 8: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/8.jpg)
• Mecanismo para empaquetaraplicaciones
• Mecanismo para ejecutaraplicaciones
Contenedores
@plainconcepts
#PlainConceptsTechDay8
![Page 9: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/9.jpg)
• Los contenedores no son máquinas virtuales
• Aunque tengan una IP propia
• Aunque ejecuten un proceso de forma aislada
• Solo se pueden ejecutar contenedores de la misma arquitectura que el SO host
• Si estás en Linux/amd64… contenedores de Linux/amd64
• Ojo a “la trampa” de Docker for Windows
Containers != virtualización
@plainconcepts
#PlainConceptsTechDay9
![Page 10: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/10.jpg)
Una imagen es un binario inmutable compuesto de una serie de capas que contiene un sistema de ficheros y una configuración
Un contenedor es una imagen “ejecutándose(*)”
¿Eres desarrollador?
Imagen == clase
Contenedor == objeto
Imágenes y contenedores
@plainconcepts
#PlainConceptsTechDay10
![Page 11: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/11.jpg)
• Cliente (herramienta CLI)
• Servidor (daemon dockerd)
Docker
@plainconcepts
#PlainConceptsTechDay11
![Page 12: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/12.jpg)
Ciclo de vida de un contenedor
@plainconcepts
#PlainConceptsTechDay12
En ejecución Parado
docker stop
docker start
docker rundocker create
![Page 13: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/13.jpg)
#PlainConceptsTechDay 13
Demo: Imágenes y contenedores
![Page 14: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/14.jpg)
#PlainConceptsTechDay 14
Desarrollo con Docker
![Page 15: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/15.jpg)
Fichero que define los pasos a realizar para crear una imagen
A partir de un Dockerfile se puede crear una imagen
Dockerfile
@plainconcepts
#PlainConceptsTechDay15
![Page 16: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/16.jpg)
Docker te permite compilar binarios sin necesidad de tener ningún SDK
instalado
Basta con usar una imagen con el SDK
Levantar un contenedor
Usar volúmenes para compartir el código fuente y el resultado de la
compilación
Compilar con Docker
@plainconcepts
#PlainConceptsTechDay16
![Page 17: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/17.jpg)
Permite la compilación y generación de una imagen en un solo proceso,
levantando varios contenedores.
Cuadra el círculo: Compilas sin necesidad del SDK, ejecutas sin necesidad del
runtime
Multi-Stage build
@plainconcepts
#PlainConceptsTechDay17
![Page 18: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/18.jpg)
#PlainConceptsTechDay 18
Demo: Multistage build
![Page 19: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/19.jpg)
Herramienta que permite manejar aplicaciones compuestas de varios
contenedores
Configurar y ejecutar varios contenedores “como un todo”
Pero es útil incluso en escenarios con un solo contenedor
Docker compose
@plainconcepts
#PlainConceptsTechDay19
![Page 20: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/20.jpg)
#PlainConceptsTechDay 20
Kubernetes
![Page 21: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/21.jpg)
Un orquestador de contenedores es un sistema que maneja y ejecutaaplicaciones basadas en contenedores. Ofrecen soluciones a:
Load balancing
(Auto) Escalado
Zero-downtime deploys
Healthchecks
Service Discovery
Orquestadores
@plainconcepts
#PlainConceptsTechDay21
![Page 22: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/22.jpg)
Es un orquestador de contenedores open source inicialmente desarrollado por
Kubernetes (aka k8s)
@plainconcepts
#PlainConceptsTechDay22
![Page 23: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/23.jpg)
• Pod: Conjunto de contenedores que se despliegan, paran, ponen en marcha y se replican conjuntamente
• Servicio: Define un conjunto lógico de pods y como acceder a ellos
• Deployment: Forma declarativa para definir un estado deseado sobre determinados pods (definir cuales y cuantos pods queremos que se ejecuten en todo momento)
• k8s se puede configurar imperativamente (usando kubectl) o declarativamente (con ficheros yaml)
Conceptos de k8s
@plainconcepts
#PlainConceptsTechDay23
![Page 24: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/24.jpg)
#PlainConceptsTechDay 24
Demo: Hello k8s
![Page 25: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/25.jpg)
Despliegue 1: Dos pods + frontend
@plainconcepts
#PlainConceptsTechDay25
Servicio master (80->80)
Pod master
Image: master
port: 80
Servicio slave (80->80)
Pod slave
Image: slave
port: 80http://slave:80
Servicio frontend (8080->80)
Pod frontend
Image: nginx
port:8080
http://master http://slave
IP Pública
![Page 26: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/26.jpg)
Despliegue 2: un pod + frontend
@plainconcepts
#PlainConceptsTechDay26
Servicio both (80->80, 8000->8000)
Pod both
Image: master
port: 80
Image: slave
port: 8000http://localhost:8000
Servicio frontend (8080->80)
Pod frontend
Image: nginx
port: 8080
http://both http://both:8000
IP Pública
![Page 27: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/27.jpg)
¡Estamos
CONTRATANDO!
27
int ledPin = 13;
void setup()
{ pinMode(ledPin, OUTPUT);
}
void loop(){ digitalWrite(ledPin, HIGH);
delay(1000); digitalWrite(ledPin, LOW);
delay(1000);
}
@plainconcepts
#PlainConceptsTechDay
www.plainconcepts.com/careers
![Page 28: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/28.jpg)
¡GRACIAS!www.plainconcepts.com
@plainconcepts
![Page 29: Docker y todo eso... más o menos](https://reader033.fdocuments.net/reader033/viewer/2022052418/5a64be147f8b9aa6148b470d/html5/thumbnails/29.jpg)
www.plainconcepts.com
MADRID
Paseo de la Castellana 163, 10º
28046 Madrid. España
T. (+34) 91 5346 836
BILBAO
Calle Ledesma 10-bis 3º
48001 Bilbao. España
T. (+34) 94 6073 371
BARCELONA
Carrer Compte d’Urgell 240 4º A
08036 Barcelona. España
T. (+34) 93 7978 566
SEVILLA
Avenida de la innovación s/n
Edificio Renta Sevilla, 3º A
41020 Sevilla. España
T. (+34) 600 58 75 43
DUBAI
Dubai Internet City. Building 1
73030 Dubai. EAU
T. (+971) 4 551 6653
LONDON
Impact Hub Kings Cross
24B York Way, N1 9AB
London. UK
SEATTLE
8201 164th Ave NE
Redmond, WA 98052
Washington
T. (+1) 206 708 1285