SlideShare una empresa de Scribd logo
1 de 31
Docker
From zero almost to
Hero
Leonardo Micheloni
@leomicheloni
Agenda
• ¿Qué es Docker?
• ¿Qué es una imagen?
• ¿Qué es un contenedor?
• Diferencia entre contenedor y máquina virtual
• ¿Cómo crear nuestras imágenes?
• ¿Cómo crear contenedores?
• Ejemplo con ASP.NET y Azure
• Otras cosas
• compose
• volumes
• orquestación
@leomicheloni
Qué es Docker
• Una empresa
• Un software para gestionar contenedores
• No es el único
• Ofrece un servicio pago
@leomicheloni
Qué es un contenedor?
@leomicheloni
The big picture
• Un container es un proceso aislado
• Tiene su propio file system
• Tiene su propia red
• Es la “base” de los microservicios actuales (pero no excluyente)
• Docker <> microservicios
• Microservicios no implica Docker
@leomicheloni
Capacidades
• Ejecutar una app sin instalar nada:
• Redis, Rabbit, PHP, Mongo, etc.
• Platform specific software
• Desarrollar en un entorno diferente.
• Desplegar lo mismo que se desarrolló.
@leomicheloni
Diferencias con una máquina virtual
http://apachebooster.com/kb/wp-content/uploads/2017/09/VM_vs_Docker.png
@leomicheloni
En Windows
Windows 10 pro 64
Windows 10 ent 64
Hyper-V
@leomicheloni
Imágenes y contenedores
https://cdn.dribbble.com/users/531222/screenshots/3477342/ingagro_nomos3-iloveimg-compressed.gif
@leomicheloni
Qué es una imagen?
• Es el “molde” para crear contenedores.
• Son inmutables.
• Se pueden crear localmente.
• Se pueden obtener desde “registros”
• Similar a npm, nuget, etc.
• Se pueden crear a partir de otras imágenes.
Imágenes vs Contenedores
• Imagen
• Es similar a una clase.
• Se utiliza para instanciar contenedores.
• Es inmutable.
• Se pueden crear múltiples “instancias”.
• Contenedor
• Es similar a un objeto.
• Se ejecuta en un entorno aislado.
• Tiene su propia red interna.
• Tiene su propio file system.
• Es donde se ejecuta nuestra app.
• Se encienden y apagan.
https://images.techhive.com/images/article/2016/06/docker-images-vs-containers-100664049-large.idge.png
@leomicheloni
Primer contacto
Todos los objetos se identifican con un hash o un nombre (opcional)
@leomicheloni
Primer contacto
• Docker run [nombre de imagen]
• Ejecuta una image => crear un container y ejecutarlo
• Busca la imagen localmente
• Busca en el registro
• Por defecto hub.docker.com
• Ejecuta el container
@leomicheloni
@leomicheloni
Registry
• De donde se bajan imágenes
• Docker hace una copia local
• Por defecto dockerhub
• Podemos usar uno propio
• Ej: Azure container registry
@leomicheloni
Tags y versiones
@leomicheloni
Tags
• Son arbitrarios
• Por defecto se toma “latest”
• No es buena práctica apuntar a “latest” en producción
• “latest” y una versión particular pueden tener el mismo hash (ser lo
mismo)
@leomicheloni
Creación de una imagen
• Dockerfile
• Es una sucesión de “layers”
• Provee un lenguaje común sobre el entorno de ejecución
@leomicheloni
Imágenes base en dockerhub
• Las imágenes “oficiales” son las raíz
• Ej. Ubuntu
@leomicheloni
Demo
@leomicheloni
Resumen
• Docker es un software para gestionar contenedores.
• Un contenedor es un proceso aislado (propio file system. Rápido y liviano).
• Una imagen es una molde para crear contenedores (es inmutable).
• Puedo crear mis propias imágenes.
• Existen registros públicos de imágenes.
• En general las imágenes son un conjunto de layers que pueden ser otras
imágenes.
• Un dockerfile me ayuda a agrupar los comandos para crear una imagen.
• Un contenedor es una instancia de una imagen.
• Un contenedor no es un microservicio y viceversa.
• Una imagen es una forma excelente de distribuir una app porque lo hago
junto con sus dependencias o simplemente un dockerfile.
@leomicheloni
Otros temas
@leomicheloni
Comando útiles
@leomicheloni
Volúmenes
• Son “mapeos” un directorio del host hacía el contenedor
• Pueden ser bidireccionales
• Ej. Store de un servidor de bases de datos
• Todo lo que queremos que persista si borramos el contenedor
@leomicheloni
Compose
• docker-compose.yaml
• Es equivalente al dockerfile pero para lanzar contenedores
• Permite definir
• Grupos de contenedores para ser lanzados juntos
• Volúmenes
• Dependencias
• Dockerfile a usar
• Imágenes a usar
• Agrega flexibilidad al despliegue
• Genera un red interna privada
• Permite hacer transformaciones basado en entornos
@leomicheloni
@leomicheloni
@leomicheloni
Orquestación
• Cuando tenemos una app con muchos contenedores es complejo
manejar
• Despliegue
• Escalabilidad
• Dependencias
• Resilencia
• Para esto existen los orquestadores
• Swarn
• Kubernetes
• Service fabric
@leomicheloni
¿Preguntas?
@leomicheloni
Referencias
• https://thenewstack.io/finally-linux-containers-really-will-run-
windows-linuxkit/
• https://github.com/g0t4/aspnetcore-generator-api
• https://dev.to/schwamster/docker-tutorial-with-for-aspnet-core
• https://docs.microsoft.com/en-us/dotnet/core/docker/intro-net-
docker
• https://www.microsoft.com/en-us/cloud-platform/containers
• https://azure.microsoft.com/es-es/services/kubernetes-service/
• https://koukia.ca/configuring-docker-swarm-as-container-
orchestrator-on-windows-1f89a2037dac
@leomicheloni

Más contenido relacionado

Similar a Docker dotnet netbaires

An evening with... Docker
An evening with... DockerAn evening with... Docker
An evening with... DockerArkhotech
 
docker.pdf
docker.pdfdocker.pdf
docker.pdfKenn70
 
Docker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbdayDocker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbdayMario IC
 
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...Francisco Javier Barrena
 
Docker para Dummies
Docker para DummiesDocker para Dummies
Docker para DummiesRaúl Unzué
 
Instalacion y uso basico de Docker.
Instalacion y uso basico de Docker.Instalacion y uso basico de Docker.
Instalacion y uso basico de Docker.Moisés Elías Araya
 
Azure AI South Azure Cognitive Services en contenedores Docker.pptx
Azure AI South Azure Cognitive Services en contenedores Docker.pptxAzure AI South Azure Cognitive Services en contenedores Docker.pptx
Azure AI South Azure Cognitive Services en contenedores Docker.pptxLuis Beltran
 
Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y ....
Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y  ....Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y  ....
Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y ....Yhorby Matias
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA_es
 
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenIniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenVíctor Leonel Orozco López
 
Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetesjdezine
 
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...Carlos Crisóstomo Vals
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJCMicael Gallego
 
Dockeriza tu entorno de desarrollo
Dockeriza tu entorno de desarrolloDockeriza tu entorno de desarrollo
Dockeriza tu entorno de desarrolloMarco Bellido
 
Dockerparadesarrollo
DockerparadesarrolloDockerparadesarrollo
DockerparadesarrolloEric Zeidan
 
Docker 10 02_18
Docker 10 02_18Docker 10 02_18
Docker 10 02_18enyert
 
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
 

Similar a Docker dotnet netbaires (20)

Docker for losers
Docker for losersDocker for losers
Docker for losers
 
An evening with... Docker
An evening with... DockerAn evening with... Docker
An evening with... Docker
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
Jug málaga docker 101 - final
Jug málaga   docker 101 - finalJug málaga   docker 101 - final
Jug málaga docker 101 - final
 
Docker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbdayDocker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbday
 
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
 
Docker para Dummies
Docker para DummiesDocker para Dummies
Docker para Dummies
 
Instalacion y uso basico de Docker.
Instalacion y uso basico de Docker.Instalacion y uso basico de Docker.
Instalacion y uso basico de Docker.
 
Azure AI South Azure Cognitive Services en contenedores Docker.pptx
Azure AI South Azure Cognitive Services en contenedores Docker.pptxAzure AI South Azure Cognitive Services en contenedores Docker.pptx
Azure AI South Azure Cognitive Services en contenedores Docker.pptx
 
Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y ....
Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y  ....Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y  ....
Desarrollando aplicaciones empresariales con Xamarin.Forms, Docker, MVVM y ....
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de MavenIniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
 
Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetes
 
Docker and networking
Docker and networkingDocker and networking
Docker and networking
 
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJC
 
Dockeriza tu entorno de desarrollo
Dockeriza tu entorno de desarrolloDockeriza tu entorno de desarrollo
Dockeriza tu entorno de desarrollo
 
Dockerparadesarrollo
DockerparadesarrolloDockerparadesarrollo
Dockerparadesarrollo
 
Docker 10 02_18
Docker 10 02_18Docker 10 02_18
Docker 10 02_18
 
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
 

Más de Leonardo Micheloni

Más de Leonardo Micheloni (15)

Docker_K8S_lecciones_netcoreconf_2022.pdf
Docker_K8S_lecciones_netcoreconf_2022.pdfDocker_K8S_lecciones_netcoreconf_2022.pdf
Docker_K8S_lecciones_netcoreconf_2022.pdf
 
Mas alla de javascript con typescript
Mas alla de javascript con typescriptMas alla de javascript con typescript
Mas alla de javascript con typescript
 
Workshop clean code javascript
Workshop clean code javascriptWorkshop clean code javascript
Workshop clean code javascript
 
2019 commit solid typescript
2019 commit solid typescript2019 commit solid typescript
2019 commit solid typescript
 
Solid con typescript
Solid con typescriptSolid con typescript
Solid con typescript
 
Tdd desde las trincheras
Tdd desde las trincherasTdd desde las trincheras
Tdd desde las trincheras
 
Pipeline continuo con VSTS Azure DevOps
Pipeline continuo con VSTS Azure DevOpsPipeline continuo con VSTS Azure DevOps
Pipeline continuo con VSTS Azure DevOps
 
Clean code javascript + live coding
Clean code javascript + live codingClean code javascript + live coding
Clean code javascript + live coding
 
Un viaje por Cosmos DB
Un viaje por Cosmos DBUn viaje por Cosmos DB
Un viaje por Cosmos DB
 
Cosmos db gab2018
Cosmos db gab2018Cosmos db gab2018
Cosmos db gab2018
 
Cosmos DB in a nutshell
Cosmos DB in a nutshellCosmos DB in a nutshell
Cosmos DB in a nutshell
 
Esp8266 iothub Azure data analysis in real time
Esp8266 iothub Azure data analysis in real timeEsp8266 iothub Azure data analysis in real time
Esp8266 iothub Azure data analysis in real time
 
Clean code javascript
Clean code javascriptClean code javascript
Clean code javascript
 
Tdd y pair programming
Tdd y pair programmingTdd y pair programming
Tdd y pair programming
 
Blockchain, smart contracts y azure
Blockchain, smart contracts y azureBlockchain, smart contracts y azure
Blockchain, smart contracts y azure
 

Docker dotnet netbaires

  • 1. Docker From zero almost to Hero Leonardo Micheloni @leomicheloni
  • 2. Agenda • ¿Qué es Docker? • ¿Qué es una imagen? • ¿Qué es un contenedor? • Diferencia entre contenedor y máquina virtual • ¿Cómo crear nuestras imágenes? • ¿Cómo crear contenedores? • Ejemplo con ASP.NET y Azure • Otras cosas • compose • volumes • orquestación @leomicheloni
  • 3. Qué es Docker • Una empresa • Un software para gestionar contenedores • No es el único • Ofrece un servicio pago @leomicheloni
  • 4. Qué es un contenedor? @leomicheloni
  • 5. The big picture • Un container es un proceso aislado • Tiene su propio file system • Tiene su propia red • Es la “base” de los microservicios actuales (pero no excluyente) • Docker <> microservicios • Microservicios no implica Docker @leomicheloni
  • 6. Capacidades • Ejecutar una app sin instalar nada: • Redis, Rabbit, PHP, Mongo, etc. • Platform specific software • Desarrollar en un entorno diferente. • Desplegar lo mismo que se desarrolló. @leomicheloni
  • 7. Diferencias con una máquina virtual http://apachebooster.com/kb/wp-content/uploads/2017/09/VM_vs_Docker.png @leomicheloni
  • 8. En Windows Windows 10 pro 64 Windows 10 ent 64 Hyper-V @leomicheloni
  • 10. Qué es una imagen? • Es el “molde” para crear contenedores. • Son inmutables. • Se pueden crear localmente. • Se pueden obtener desde “registros” • Similar a npm, nuget, etc. • Se pueden crear a partir de otras imágenes.
  • 11. Imágenes vs Contenedores • Imagen • Es similar a una clase. • Se utiliza para instanciar contenedores. • Es inmutable. • Se pueden crear múltiples “instancias”. • Contenedor • Es similar a un objeto. • Se ejecuta en un entorno aislado. • Tiene su propia red interna. • Tiene su propio file system. • Es donde se ejecuta nuestra app. • Se encienden y apagan. https://images.techhive.com/images/article/2016/06/docker-images-vs-containers-100664049-large.idge.png @leomicheloni
  • 12. Primer contacto Todos los objetos se identifican con un hash o un nombre (opcional) @leomicheloni
  • 13. Primer contacto • Docker run [nombre de imagen] • Ejecuta una image => crear un container y ejecutarlo • Busca la imagen localmente • Busca en el registro • Por defecto hub.docker.com • Ejecuta el container @leomicheloni
  • 15. Registry • De donde se bajan imágenes • Docker hace una copia local • Por defecto dockerhub • Podemos usar uno propio • Ej: Azure container registry @leomicheloni
  • 17. Tags • Son arbitrarios • Por defecto se toma “latest” • No es buena práctica apuntar a “latest” en producción • “latest” y una versión particular pueden tener el mismo hash (ser lo mismo) @leomicheloni
  • 18. Creación de una imagen • Dockerfile • Es una sucesión de “layers” • Provee un lenguaje común sobre el entorno de ejecución @leomicheloni
  • 19. Imágenes base en dockerhub • Las imágenes “oficiales” son las raíz • Ej. Ubuntu @leomicheloni
  • 21. Resumen • Docker es un software para gestionar contenedores. • Un contenedor es un proceso aislado (propio file system. Rápido y liviano). • Una imagen es una molde para crear contenedores (es inmutable). • Puedo crear mis propias imágenes. • Existen registros públicos de imágenes. • En general las imágenes son un conjunto de layers que pueden ser otras imágenes. • Un dockerfile me ayuda a agrupar los comandos para crear una imagen. • Un contenedor es una instancia de una imagen. • Un contenedor no es un microservicio y viceversa. • Una imagen es una forma excelente de distribuir una app porque lo hago junto con sus dependencias o simplemente un dockerfile. @leomicheloni
  • 24. Volúmenes • Son “mapeos” un directorio del host hacía el contenedor • Pueden ser bidireccionales • Ej. Store de un servidor de bases de datos • Todo lo que queremos que persista si borramos el contenedor @leomicheloni
  • 25. Compose • docker-compose.yaml • Es equivalente al dockerfile pero para lanzar contenedores • Permite definir • Grupos de contenedores para ser lanzados juntos • Volúmenes • Dependencias • Dockerfile a usar • Imágenes a usar • Agrega flexibilidad al despliegue • Genera un red interna privada • Permite hacer transformaciones basado en entornos @leomicheloni
  • 26.
  • 29. Orquestación • Cuando tenemos una app con muchos contenedores es complejo manejar • Despliegue • Escalabilidad • Dependencias • Resilencia • Para esto existen los orquestadores • Swarn • Kubernetes • Service fabric @leomicheloni
  • 31. Referencias • https://thenewstack.io/finally-linux-containers-really-will-run- windows-linuxkit/ • https://github.com/g0t4/aspnetcore-generator-api • https://dev.to/schwamster/docker-tutorial-with-for-aspnet-core • https://docs.microsoft.com/en-us/dotnet/core/docker/intro-net- docker • https://www.microsoft.com/en-us/cloud-platform/containers • https://azure.microsoft.com/es-es/services/kubernetes-service/ • https://koukia.ca/configuring-docker-swarm-as-container- orchestrator-on-windows-1f89a2037dac @leomicheloni

Notas del editor

  1. Linux en Windows https://thenewstack.io/finally-linux-containers-really-will-run-windows-linuxkit/
  2. VM: you can size it. VM: hypervisor => software, hardware
  3. Docker image ls Docker container ls Docker ps Docker images Docker ps -a
  4. Docker run hello-world
  5. Docker –it alpine Docker –name test alpine Reusar containers docker run –n hello hello-world
  6. Las imágenes tiene diferentes tags pero son las mismas Los tags indican “versiones” en general “latest” es la última pero no es recomendable usarla Docker run --rm –it Microsoft/donet-runtime dotnet
  7. Docker container inspect nro
  8. Docker build –t test:1 .
  9. docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=P@ssword123' -p 1433:1433 -d microsoft/mssql-server-linux:2017-CU8 docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=P@ssword123' -p 1433:1433 -d -v mssql-server-linux-data:/var/opt/mssql/data microsoft/mssql-server-linux:2017-CU8
  10. Ejemplo de lanzar sqlserver con el volumen montado