Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introducción a Docker

Introducción a Docker

My intro to docker talk at Euskal Encounter 23 (spanish).

Carlos Moro

July 23, 2015
Tweet

More Decks by Carlos Moro

Other Decks in Technology

Transcript

  1. CMG Introducción Veremos qué es Docker y qué problemas soluciona

    Aprenderemos de forma práctica a dar nuestros primeros pasos con Docker
  2. CMG El Problema Software con múltiples dependencias Debe funcionar en

    múltiples lugares Debe poder migrarse de forma sencilla entre entornos
  3. CMG

  4. CMG

  5. CMG El Problema Echando la vista atrás, esta es una

    problemática análoga a otras que ya han sido solucionadas en el pasado Por ejemplo, el transporte de mercancías…
  6. CMG

  7. CMG

  8. CMG La Solución A las mentes pensantes de aquella época

    se les ocurrió la idea del contenedor Sistema standard para resolver el problema
  9. CMG

  10. CMG La Solución De la misma forma, en nuestro mundillo,

    el contenedor da solución al Matrix from Hell
  11. CMG

  12. CMG La Solución Una tecnología que posibilita encapsular software de

    forma autocontenida, portable y autosuficiente…
  13. CMG La Solución …que puede ser manipulada con operaciones standard

    y funcionar de forma consistente en cualquier entorno
  14. CMG

  15. CMG La Solución Desarrolladores Múltiples versiones de tu misma app

    en diferentes containers Automatiza tests, integración, empaquetado Adiós problemas de compatibilidad
  16. CMG La Solución Sistemas Configure once, run anything Elimina inconsistencias

    entre DEV, TEST, PRO Separación de responsabilidades
  17. CMG

  18. CMG

  19. CMG Arquitectura Docker se basa en varias tecnologías ya existentes

    La clave está en que ha estandarizado el uso de dichas tecnologías
  20. CMG

  21. CMG

  22. CMG Arquitectura Docker Daemon Corre en la máquina host Es

    quien realmente interactúa con el kernel
  23. CMG Arquitectura Docker Client Corre en la máquina host o

    en cualquier otra máquina con conectividad al Daemon Interactúa con el Daemon mediante comandos
  24. CMG Arquitectura Docker Containers Concepto similar a un directorio Contiene

    todo lo que necesita una aplicación para funcionar
  25. CMG Arquitectura Docker Containers Cada container se crea a partir

    de una image base Se definen mediante Dockerfiles
  26. CMG Instalación Método fácil y rápido La pega es que

    no obtendremos la última versión estable de docker Para ello, tendríamos que añadir el repositorio apt de docker e instalar el paquete docker-lxc
  27. CMG Nuestro primer container ¡Vamos a lanzar nuestro primer container!

    docker run ubuntu:14.04 /bin/echo ‘Hello World!’
  28. CMG

  29. CMG

  30. CMG

  31. CMG Nuestro primer container Hemos lanzado el comando run Le

    hemos indicado la imagen base (ubuntu:14.04) Le hemos indicado que aplicación lanzar dentro del container cuando éste arranque (/bin/echo)
  32. CMG Nuestro primer container Para conseguirlo, docker… hace pull de

    la image crea un nuevo container crea un filesystem y monta una capa rw sobre el mismo
  33. CMG Nuestro primer container crea un interface de red para

    hablar con localhost le asigna una dirección IP ejecuta el proceso que se ha especificado captura la salida de ese proceso
  34. CMG Comandos docker images Muestra un listado con las images

    y sus versiones que tenemos descargadas localmente.
  35. CMG Comandos docker run <image>:<tag> <command> Lanza un nuevo contenedor

    basado en la imagen image, versión tag y ejecuta el comando indicado.
  36. CMG Comandos docker run -d <image>:<tag> <command> Detach, ejecución en

    background. Además, muestra el ID del Container.
  37. CMG Comandos docker ps -a Muestra un listado de todos

    los contenedores que se han lanzado.
  38. CMG Docker Hub Hub es el registry público de docker

    Podemos registrarnos y hacer uso del mismo Podemos subir n imágenes públicas gratuitamente
  39. CMG Docker Hub Podemos subir sólo una imagen privada de

    forma gratuita Se ofrecen planes de pago para el uso privado (ie: en ámbito de empresa)
  40. CMG Docker Hub Docker Registry es un proyecto open source

    https://github.com/docker/ distribution No así la interfaz (el Hub)
  41. CMG

  42. CMG Dockerfile Mediante el Dockerfile Es un fichero en el

    que se indica una secuencia de comandos para que docker construya nuestra imagen
  43. CMG Dockerfile Una vez creado, lanzamos el comando docker build

    que parseará el fichero y generará nuestra imagen
  44. CMG FROM ubuntu:12.04 MAINTAINER Dordoka [email protected] RUN apt-get update &&

    apt-get install -y apache2 ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 EXPOSE 80 VOLUME /var/www/ CMD [“apache2”,“-D”,“FOREGROUND”]
  45. CMG Comprobamos que no ha aparecido ningún error $ docker

    images Comprobamos nuestra nueva imagen
  46. CMG Dockerfile Ahora vamos a lanzar un container que use

    nuestra imagen Aprovechamos y vemos un par de opciones muy comunes de docker run
  47. CMG Lanzamos nuestra imagen $ docker run euskal23/apache2 Vemos que

    apache se está ejecutando, pero no podemos conectarnos
  48. CMG Lanzamos nuestra imagen, esta vez exponiendo el puerto tcp80

    $ docker run -p80:80 euskal23/apache2 Comprobamos
  49. CMG

  50. CMG Dockerfile Hemos usado el flag -d el cual ejecuta

    el contenedor en background También hemos usado el flag -p, el cual expone un puerto del contenedor y lo mapea a un puerto del host docker
  51. CMG Dockerfile Como lo hemos lanzado en background, nuestro container

    se mantiene en marcha Para detenerlo, usamos el comando stop
  52. CMG Dockerfile Otro flag muy común es -v Significa volume

    y mapea un directorio del host docker dentro de otro directorio del container -v <hostdir>:<containerdir>
  53. CMG Dockerfile Prueba a crear un directorio Crea un fichero

    index.html en el mismo con algún contenido Prueba a ejecutar tu container, haciendo uso de -d, -p y -v
  54. CMG Lanzamos nuestra imagen $ docker run -d -p 80:80

    -v ~/www:/var/www euskal23/apache2
  55. CMG Dockerfile Hay mucho más… aplicaciones con múltiples containers (links,

    docker- compose) orquestación (docker swarm, kubernetes, apache mesos)