Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Docker for losers

29 views

Published on

Introducción a los principios básicos de Docker

  • Be the first to comment

  • Be the first to like this

Docker for losers

  1. 1. for losers
  2. 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 • Otras cosas
  3. 3. Qué es Docker • Una empresa • Un software para gestionar contenedores • No es el único • Ofrece un servicio pago
  4. 4. Qué es un contenedor?
  5. 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
  6. 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ó
  7. 7. Diferencias con una máquina virtual http://apachebooster.com/kb/wp-content/uploads/2017/09/VM_vs_Docker.png
  8. 8. En Windows Windows 10 pro 64 Windows 10 ent 64 Hyper-V
  9. 9. Imágenes y contenedores https://cdn.dribbble.com/users/531222/screenshots/3477342/ingagro_nomos3-iloveimg-compressed.gif
  10. 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.
  11. 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
  12. 12. Primer contacto Todos los objetos se identifican con un hash o un nombre (opcional)
  13. 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
  14. 14. Registry • De donde se bajan imágenes • Docker hace una copia local • Por defecto dockerhub • Podemos usar uno propio • Ej: Azure
  15. 15. Tags y versiones
  16. 16. 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)
  17. 17. Creación de una imagen • dockerfile • Es una sucesión de “layers” • Provee un lenguaje común sobre el entorno de ejecución
  18. 18. Imágenes base en dockerhub • Las imágenes “oficiales” son las raíz • Ej. Ubuntu • Excepto en el caso de Microsoft • Ej. Microsoft/aspnetcore
  19. 19. Ejecutar una app en una imagen • https://github.com/g0t4/aspnetcore-generator-api • Publicación local • Crear nuestra imagen • Seleccionar runtime base • Copiar nuestro código publicado en la imagen • Indicar punto de inicio
  20. 20. Comando útiles • docker cp source_path container_id:dest_path • -it => modo interactivo • stats => estado • Inspect container / imagen / volumen • docker logs –f container • docker exec -it new-container bash
  21. 21. Resumen • Un contenedor es un proceso aislado (propia red, fs. Rápido y liviano) • Una imagen es una molde para crear contenedores (es inmutable) • Docker es un software para gestionar contenedores • Un contenedor no es un microservicio y viceversa • 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 • Una imagen es una forma excelente de distribuir una app porque lo hago junto con sus dependencias o simplemente un dockerfile
  22. 22. 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
  23. 23. 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 • Permite hacer transformaciones basado en entornos
  24. 24. 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
  25. 25. https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/docker-application-development-process/media/image1.png
  26. 26. Qué ofrece Azure? • Azure container services • Azure Kubernetes Services (AKS) • App Service • Container registry
  27. 27. • 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

×