SlideShare una empresa de Scribd logo
1 de 29
#PlainConceptsTechDay
20.12.2017
Plain Concepts
Tech Day
Eduard Tomàs
Docker y todo eso… más o
menos
RANDOM KEY PRESS DEVELOPER
#PlainConceptsTechDay 2
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
#PlainConceptsTechDay 3
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
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”]
Qué veremos
#PlainConceptsTechDay 5
#PlainConceptsTechDay 6
Contenedores… ¿qué son?
@plainconcepts
#PlainConceptsTechDay
• Mecanismo para
empaquetar
aplicaciones
• Mecanismo para
ejecutar
aplicaciones
Contenedores
@plainconcepts
#PlainConceptsTechDay 8
• 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
#PlainConceptsTechDay 9
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
#PlainConceptsTechDay 10
• Cliente (herramienta CLI)
• Servidor (daemon dockerd)
Docker
@plainconcepts
#PlainConceptsTechDay 11
Ciclo de vida de un contenedor
@plainconcepts
#PlainConceptsTechDay 12
En ejecución Parado
docker stop
docker start
docker run
docker create
#PlainConceptsTechDay 13
Demo: Imágenes y contenedores
#PlainConceptsTechDay 14
Desarrollo con Docker
Fichero que define los pasos a realizar para crear una imagen
A partir de un Dockerfile se puede crear una imagen
Dockerfile
@plainconcepts
#PlainConceptsTechDay 15
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
#PlainConceptsTechDay 16
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
#PlainConceptsTechDay 17
#PlainConceptsTechDay 18
Demo: Multistage build
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
#PlainConceptsTechDay 19
#PlainConceptsTechDay 20
Kubernetes
Un orquestador de contenedores es un sistema que maneja y ejecuta
aplicaciones basadas en contenedores. Ofrecen soluciones a:
Load balancing
(Auto) Escalado
Zero-downtime deploys
Healthchecks
Service Discovery
Orquestadores
@plainconcepts
#PlainConceptsTechDay 21
Es un orquestador de contenedores open source inicialmente desarrollado por
Google
Kubernetes (aka k8s)
@plainconcepts
#PlainConceptsTechDay 22
• 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
#PlainConceptsTechDay 23
#PlainConceptsTechDay 24
Demo: Hello k8s
Despliegue 1: Dos pods + frontend
@plainconcepts
#PlainConceptsTechDay 25
Servicio master (80->80)
Pod master
Image: master
port: 80
Servicio slave (80->80)
Pod slave
Image: slave
port: 80
http://slave:80
Servicio frontend (8080->80)
Pod frontend
Image: nginx
port:8080
http://master http://slave
IP Pública
Despliegue 2: un pod + frontend
@plainconcepts
#PlainConceptsTechDay 26
Servicio both (80->80, 8000->8000)
Pod both
Image: master
port: 80
Image: slave
port: 8000
http://localhost:8000
Servicio frontend (8080->80)
Pod frontend
Image: nginx
port: 8080
http://both http://both:8000
IP Pública
¡Estamos
CONTRATANDO!
27
careers@plainconcepts.com
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
¡GRACIAS!
www.plainconcepts.com
@plainconcepts
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

Más contenido relacionado

La actualidad más candente

Cómo petarlo con Blockchain en 45' - Plain Concepts Dev Day
Cómo petarlo con Blockchain en 45' - Plain Concepts Dev DayCómo petarlo con Blockchain en 45' - Plain Concepts Dev Day
Cómo petarlo con Blockchain en 45' - Plain Concepts Dev DayPlain Concepts
 
Kubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev DayKubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev DayPlain Concepts
 
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosMicael Gallego
 
Orquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextOrquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextDomingo Suarez Torres
 
[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)Ernesto Anaya
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!Paradigma Digital
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talkCarlos Landeras Martínez
 
Pipelines as Code en Azure DevOps
Pipelines as Code en Azure DevOpsPipelines as Code en Azure DevOps
Pipelines as Code en Azure DevOpsChristian Melendez
 
DevOps Spain 2019. Carlos Landeras-Plain Concepts
DevOps Spain 2019. Carlos Landeras-Plain ConceptsDevOps Spain 2019. Carlos Landeras-Plain Concepts
DevOps Spain 2019. Carlos Landeras-Plain ConceptsatSistemas
 
Java Dev Day 2019 No kuberneteen por convivir
Java Dev Day 2019  No kuberneteen por convivirJava Dev Day 2019  No kuberneteen por convivir
Java Dev Day 2019 No kuberneteen por convivirDomingo Suarez Torres
 
Introducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVMIntroducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVMVíctor Leonel Orozco López
 
Google Kubernetes Engine (GKE)
Google Kubernetes Engine (GKE)Google Kubernetes Engine (GKE)
Google Kubernetes Engine (GKE)Edith Puclla
 

La actualidad más candente (20)

Cómo petarlo con Blockchain en 45' - Plain Concepts Dev Day
Cómo petarlo con Blockchain en 45' - Plain Concepts Dev DayCómo petarlo con Blockchain en 45' - Plain Concepts Dev Day
Cómo petarlo con Blockchain en 45' - Plain Concepts Dev Day
 
Kubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev DayKubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev Day
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
Gestión de proyectos con Maven
Gestión de proyectos con MavenGestión de proyectos con Maven
Gestión de proyectos con Maven
 
Desarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud NativeDesarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud Native
 
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
 
Kubernetes Community Day Spain -> Crossplane
Kubernetes Community Day Spain -> CrossplaneKubernetes Community Day Spain -> Crossplane
Kubernetes Community Day Spain -> Crossplane
 
Orquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextOrquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNext
 
[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
 
Pipelines as Code en Azure DevOps
Pipelines as Code en Azure DevOpsPipelines as Code en Azure DevOps
Pipelines as Code en Azure DevOps
 
Web Day Devops - Plain Concepts
Web Day Devops - Plain ConceptsWeb Day Devops - Plain Concepts
Web Day Devops - Plain Concepts
 
Docker containers-itb-2021
Docker containers-itb-2021Docker containers-itb-2021
Docker containers-itb-2021
 
DevOps Spain 2019. Carlos Landeras-Plain Concepts
DevOps Spain 2019. Carlos Landeras-Plain ConceptsDevOps Spain 2019. Carlos Landeras-Plain Concepts
DevOps Spain 2019. Carlos Landeras-Plain Concepts
 
Introduction to Azure DevOps
Introduction to Azure DevOpsIntroduction to Azure DevOps
Introduction to Azure DevOps
 
Java Dev Day 2019 No kuberneteen por convivir
Java Dev Day 2019  No kuberneteen por convivirJava Dev Day 2019  No kuberneteen por convivir
Java Dev Day 2019 No kuberneteen por convivir
 
Intro to the Cloud with Knative (Spanish)
Intro to the Cloud with Knative (Spanish) Intro to the Cloud with Knative (Spanish)
Intro to the Cloud with Knative (Spanish)
 
Introducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVMIntroducción a GraalVM Native para aplicaciones JVM
Introducción a GraalVM Native para aplicaciones JVM
 
Google Kubernetes Engine (GKE)
Google Kubernetes Engine (GKE)Google Kubernetes Engine (GKE)
Google Kubernetes Engine (GKE)
 

Similar a Docker y todo eso... más o menos

Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?
Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?
Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?Plain Concepts
 
Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetesjdezine
 
Docker 10 02_18
Docker 10 02_18Docker 10 02_18
Docker 10 02_18enyert
 
Iniciando con containers en azure
Iniciando con containers en azureIniciando con containers en azure
Iniciando con containers en azureOscar Gensollen
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014quaip
 
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 URJCMicael Gallego
 
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
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJCMicael Gallego
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA_es
 
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019 Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019 Santi Macias Rodriguez
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Eduardo Castro
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemMario IC
 
Plug&play:deploying big data_solutions
Plug&play:deploying big data_solutionsPlug&play:deploying big data_solutions
Plug&play:deploying big data_solutionsDavid Piris
 
Contenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneasContenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneasSoftware Guru
 

Similar a Docker y todo eso... más o menos (20)

Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?
Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?
Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?
 
Dockeriza tu SQL Server
Dockeriza tu SQL ServerDockeriza tu SQL Server
Dockeriza tu SQL Server
 
Autobuses de Madrid en tiempo real con Azure Relay
Autobuses de Madrid en tiempo real con Azure RelayAutobuses de Madrid en tiempo real con Azure Relay
Autobuses de Madrid en tiempo real con Azure Relay
 
Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetes
 
Docker 10 02_18
Docker 10 02_18Docker 10 02_18
Docker 10 02_18
 
Iniciando con containers en azure
Iniciando con containers en azureIniciando con containers en azure
Iniciando con containers en azure
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
 
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
 
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
 
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
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019 Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker
 
Taller girona
Taller gironaTaller girona
Taller girona
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker Ecosystem
 
Plug&play:deploying big data_solutions
Plug&play:deploying big data_solutionsPlug&play:deploying big data_solutions
Plug&play:deploying big data_solutions
 
Contenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneasContenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneas
 

Más de Eduard Tomàs

C#9 - Más C# que nunca
C#9 - Más C# que nuncaC#9 - Más C# que nunca
C#9 - Más C# que nuncaEduard Tomàs
 
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDACollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDAEduard Tomàs
 
Keda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessKeda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessEduard Tomàs
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y RendimientoEduard Tomàs
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Eduard Tomàs
 
El "peor" lenguaje del mundo
El "peor" lenguaje del mundoEl "peor" lenguaje del mundo
El "peor" lenguaje del mundoEduard Tomàs
 
Containerize a netcore application with aks
 Containerize a netcore application with aks Containerize a netcore application with aks
Containerize a netcore application with aksEduard Tomàs
 
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Eduard Tomàs
 
Aplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosAplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosEduard Tomàs
 
Serverless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbServerless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbEduard Tomàs
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?Eduard Tomàs
 
React native - Unleash the power of your device
React native - Unleash the power of your deviceReact native - Unleash the power of your device
React native - Unleash the power of your deviceEduard Tomàs
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)Eduard Tomàs
 
Asp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveAsp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveEduard Tomàs
 
React native - t3chfest 2016
React native - t3chfest 2016React native - t3chfest 2016
React native - t3chfest 2016Eduard Tomàs
 
React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React nativeEduard Tomàs
 
Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Eduard Tomàs
 
JavaScript - HTML5 - IndexedDb
JavaScript - HTML5 - IndexedDbJavaScript - HTML5 - IndexedDb
JavaScript - HTML5 - IndexedDbEduard Tomàs
 
Winobjc - Windows Bridge for iOS
Winobjc - Windows Bridge for iOSWinobjc - Windows Bridge for iOS
Winobjc - Windows Bridge for iOSEduard Tomàs
 

Más de Eduard Tomàs (20)

C#9 - Más C# que nunca
C#9 - Más C# que nuncaC#9 - Más C# que nunca
C#9 - Más C# que nunca
 
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDACollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
 
Keda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessKeda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en Serverless
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y Rendimiento
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++
 
El "peor" lenguaje del mundo
El "peor" lenguaje del mundoEl "peor" lenguaje del mundo
El "peor" lenguaje del mundo
 
Containerize a netcore application with aks
 Containerize a netcore application with aks Containerize a netcore application with aks
Containerize a netcore application with aks
 
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
 
Aplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosAplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramos
 
Serverless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbServerless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDb
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?
 
Azure functions
Azure functionsAzure functions
Azure functions
 
React native - Unleash the power of your device
React native - Unleash the power of your deviceReact native - Unleash the power of your device
React native - Unleash the power of your device
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)
 
Asp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveAsp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep Dive
 
React native - t3chfest 2016
React native - t3chfest 2016React native - t3chfest 2016
React native - t3chfest 2016
 
React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React native
 
Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6
 
JavaScript - HTML5 - IndexedDb
JavaScript - HTML5 - IndexedDbJavaScript - HTML5 - IndexedDb
JavaScript - HTML5 - IndexedDb
 
Winobjc - Windows Bridge for iOS
Winobjc - Windows Bridge for iOSWinobjc - Windows Bridge for iOS
Winobjc - Windows Bridge for iOS
 

Docker y todo eso... más o menos

  • 1. #PlainConceptsTechDay 20.12.2017 Plain Concepts Tech Day Eduard Tomàs Docker y todo eso… más o menos RANDOM KEY PRESS DEVELOPER
  • 2. #PlainConceptsTechDay 2 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
  • 3. #PlainConceptsTechDay 3 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
  • 4. 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”]
  • 8. • Mecanismo para empaquetar aplicaciones • Mecanismo para ejecutar aplicaciones Contenedores @plainconcepts #PlainConceptsTechDay 8
  • 9. • 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 #PlainConceptsTechDay 9
  • 10. 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 #PlainConceptsTechDay 10
  • 11. • Cliente (herramienta CLI) • Servidor (daemon dockerd) Docker @plainconcepts #PlainConceptsTechDay 11
  • 12. Ciclo de vida de un contenedor @plainconcepts #PlainConceptsTechDay 12 En ejecución Parado docker stop docker start docker run docker create
  • 15. Fichero que define los pasos a realizar para crear una imagen A partir de un Dockerfile se puede crear una imagen Dockerfile @plainconcepts #PlainConceptsTechDay 15
  • 16. 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 #PlainConceptsTechDay 16
  • 17. 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 #PlainConceptsTechDay 17
  • 19. 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 #PlainConceptsTechDay 19
  • 21. Un orquestador de contenedores es un sistema que maneja y ejecuta aplicaciones basadas en contenedores. Ofrecen soluciones a: Load balancing (Auto) Escalado Zero-downtime deploys Healthchecks Service Discovery Orquestadores @plainconcepts #PlainConceptsTechDay 21
  • 22. Es un orquestador de contenedores open source inicialmente desarrollado por Google Kubernetes (aka k8s) @plainconcepts #PlainConceptsTechDay 22
  • 23. • 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 #PlainConceptsTechDay 23
  • 25. Despliegue 1: Dos pods + frontend @plainconcepts #PlainConceptsTechDay 25 Servicio master (80->80) Pod master Image: master port: 80 Servicio slave (80->80) Pod slave Image: slave port: 80 http://slave:80 Servicio frontend (8080->80) Pod frontend Image: nginx port:8080 http://master http://slave IP Pública
  • 26. Despliegue 2: un pod + frontend @plainconcepts #PlainConceptsTechDay 26 Servicio both (80->80, 8000->8000) Pod both Image: master port: 80 Image: slave port: 8000 http://localhost:8000 Servicio frontend (8080->80) Pod frontend Image: nginx port: 8080 http://both http://both:8000 IP Pública
  • 27. ¡Estamos CONTRATANDO! 27 careers@plainconcepts.com 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
  • 29. 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