SlideShare a Scribd company logo
1 of 57
Introducción a Docker
Benito Cuesta – Salvador González
1 de Marzo de 2016
Marzo 2016 www.opencanarias.com 2
● Experiencia del INTA con Docker (6 min)
– Jesús Garrido (INTA)
– Antonio Lara (INTA)
● Introducción a Docker (1 h 27 min)
– Benito Cuesta (Open Canarias)
– Salvador González (Open Canarias)
Marzo 2016 www.opencanarias.com 3
Índice
● Presentación
● Dockers: Definición y características
● Getting Started
● Delivery con Kubernetes
● Microservicios. Estilo arquitectónico. Ventajas de
dockers para una arquitectura de microservicios
● Ciclo de vida con Devops / Integración Continua
● Caso práctico: Cluster de LibreOffice con Docker
Presentación
Marzo 2016 www.opencanarias.com 5
Open Canarias
Empresa de servicios y suministros
TIC fundada en 1996
Actualmente tiene implantación
nacional y con presencia
internacional en México
Está especializada en productos y
servicios TI, además de proyectos de
alto riesgo tecnológico
Business Partner de IBM
Áreas de
servicio
Servicios de
Ingeniería del
Software
Servicios de
Infraestructura
TIC
Servicios
externos
Marzo 2016 www.opencanarias.com 6
Servicios de
Ingeniería del Software
Proporcionan soluciones a diferentes aspectos del
ciclo de vida de aplicaciones, con especial énfasis
en el incremento de la productividad y la calidad en
los procesos y productos de trabajo vinculados a
dicho ciclo de vida
Fundamentan estas soluciones en las capacidades
en MDE (Model Driven Engineering), un nuevo
paradigma de la Ingeniería del Software en el que
Open Canarias ha sido pionero y contribuidor a
varios estándares
Con MDE se construyen herramientas que
automatizan procesos y tareas del ciclo de vida del
software, reduciendo los tiempos de entrega, al
mismo tiempo que se mejora la calidad al reducir
las tareas manuales propensas a errores
EstructuradelosServicios
Desarrollo de Herramientas
Modernización del Software
Aseguramiento de la calidad
Marzo 2016 www.opencanarias.com 7
Antes de empezar...
● “La complejidad cada vez mayor de las
aplicaciones y la necesidad de acelerar el
desarrollo están ejerciendo aún más presión
sobre la infraestructura, procesos y equipos de TI.”
● https://www.redhat.com/es/insights/containers
Marzo 2016 www.opencanarias.com 8
Otra cita...
● “Los líderes en I&O deben mejorar las estrategias
de implementación de servidores o crearán
infraestructuras incapaces de dar soporte a la
siguiente generación de aplicaciones.”
– IT market clock for server virtualization and operanting
environments
– 16/09/2014. GARTNER N.º: G00262842
Marzo 2016 www.opencanarias.com 9
Un buen libro para empezar
● The Docker Book
– James Turnbull
– Agosto, 2014
– www.dockerbook.com
Definición y características
Marzo 2016 www.opencanarias.com 11
¿Qué es docker?
● “Es un proyecto open source para empaquetar, transportar y ejecutar
cualquier aplicación como un contenedor ligero”.
● Su versión inicial se publica el 13 de Marzo de 2013 y está escrito en el
lenguaje GO.
● Se trata de un nuevo modelo de virtualización que crea una capa de
abstracción con el S.O.
● Un contenedor conforma el contexto de ejecución de una aplicación. Está
compuesto de:
● Sistema de ficheros
● Procesos
● Memoria
● … y todo aislado del S.O huésped
Marzo 2016 www.opencanarias.com 12
Componentes
● Libcontainer (Derivado de LXC).
● Linux kernel namespaces (aislamiento del sistema
de ficheros, red y procesos).
● Aislamiento de los recursos (Cpu, Memoria, etc)
por medio de los cgroups.
● Copy-on-write
● Logging. Salidas de la línea de comando
accesibles con el cliente docker.
● Consola interactiva.
Marzo 2016 www.opencanarias.com 13
La comunidad de Docker
● 1200 contribuidores al proyecto Docker
● 100,000 aplicaciones dockerizadas
● Entre 3 y 4 millones de desarrolladores usando
Docker
● 300 millones de descargas
● 32,000 proyectos relacionados con Docker
● El 70% de las empresas TI están adoptando Docker
– Fuente: SD Times
Marzo 2016 www.opencanarias.com 14
Nuevo modelo
Partes comunes
Marzo 2016 www.opencanarias.com 15
Nueva visión del
Sistema Operativo
● Con el nuevo modelo de contenedores podemos
abstraernos del S.O. donde corre el motor Docker.
● Diseñados para un mundo Cloud, distribuido.
● Los nuevos Sistemas Operativos
(BareMetal/Virtual)
Marzo 2016 www.opencanarias.com 16
Registro
● Registro
– Registro público (Docker Hub)
● > 10.000 imágenes disponibles
– Registro privado
● Sólo accesible bajo autorización. Es de pago.
● Registro local
– Este registro se instala por medio de un contenedor
Docker para centralizar las imágenes de los
contenedores
Marzo 2016 www.opencanarias.com 17
Ventajas de Dockers
Fuente: https://www.redhat.com/es/insights/containers
Getting Started
Marzo 2016 www.opencanarias.com 19
Instalación
● En linux se hace uso de los comandos de gestión
de paquetes habituales
● Para Windows y Mac se hace uso de un programa
llamado “docker-machine”
● Docker es un demonio que expone una interfaz
REST
Marzo 2016 www.opencanarias.com 20
Linux / Mac / Windows
Marzo 2016 www.opencanarias.com 21
Comandos iniciales
● docker (lista los posibles comandos)
● docker version (versión del demonio y del cliente)
● docker info (información del sistema)
Marzo 2016 www.opencanarias.com 22
Nuestro primer contenedor
● docker run -i ubuntu echo Hello World
– run Ejecutar un contenedor→
– -i Modo interactivo→
– ubuntu Imagen a usar en el contenedor→
– echo Hello World Comando a ejecutar→
● Flujo:
– Busca la imagen localmente, luego en repositorios
centrales.
Marzo 2016 www.opencanarias.com 23
Imágenes
● Una imagen está formada
por capas (layers) que se
montan unas encima de
otras. Todas en modo sólo
lectura.
● La última capa se monta
como lectura/escritura y
da lugar al contenedor.
● Las capas usan el patrón
“copy on write”
Marzo 2016 www.opencanarias.com 24
Comandos imágenes
● docker images
● docker run -t -i --name test01 ubuntu /bin/bash
(ubuntu:latest)
● docker run -t -i --name test02 centos:centos6
/bin/bash
● docker pull ubuntu:14.04
● docker pull sgonzalez/centosopen:centos5
● docker search centos
Marzo 2016 www.opencanarias.com 25
Crear imágenes
● docker commit (no recomendado)
– docker run -it centos /bin/bash
– yum upgrade && yum install httpd
– vi /var/www/html/index.html
– exit
– docker commit <containerID> sgonzalez/apache:webopen
● docker build
– Consiste en un fichero (Dockerfile) de instrucciones para
construir las imágenes
Marzo 2016 www.opencanarias.com 26
Dockerfile
● Comandos más habituales
– FROM De que imagen partimos para crear la nueva→
– MAINTEINER Quien mantiene el contenedor→
– RUN Ejecuta una instrucción en el contenedor→
– ADD Añade un fichero o carpeta al contenedor→
– ENV Establece una variable de entorno en el contenedo→
– EXPOSE Indica que se va a exponer un puerto del→
contenedor
– ENTRYPOINT / CMD Qué se ejecuta→
Marzo 2016 www.opencanarias.com 27
entrypoint / cmd
● ENTRYPOINT define el proceso a ejecutar
– Por defecto es “/bin/sh -c”
● CMD son los parámetros del proceso
● Por ejemplo:
– CMD [“/usr/bin/top”]
– docker run -i -t myubuntu (/bin/sh -c /usr/bin/top)
– docker run -i -t myubuntu bash (/bin/sh -c bash)
– ENTRYPOINT ["/bin/cat"]
– docker run -it catimg /etc/passwd (/bin/cat /etc/passwd)
Marzo 2016 www.opencanarias.com 28
Contenedores
● Hacen uso de una imagen como base y pueden
contener uno o más procesos.
● Un contenedor Docker es:
– Una instancia de una imagen Docker
– Un conjunto de operaciones asociadas a su ciclo de
vida:
● Crear, Destruir, Arrancar, Reiniciar o Parar
– Un entorno de ejecución
Marzo 2016 www.opencanarias.com 29
Comandos contenedores
● docker run -d ubuntu /bin/sh -c "while true; do echo
Hello World; sleep 1; done"
docker ps [-a] docker inspect <ID>
docker attach <ID> docker stop <ID>
docker start <ID> docker rm [-f] <ID>
docker logs [-f] <ID> docker create <image>
docker top <ID> docker build [-f dockerfile] <dir>
docker exec <ID> <cmd> docker load / save
Marzo 2016 www.opencanarias.com 30
Uso de contenedores
● Data Volumes
– Dockerfile
● VOLUME [ “/var/log/http” ]
– Docker run
● docker run -v [rutahost:]rutacontenedor[:rw,:ro]
● Data Volume Containers
● docker run --volumes-from datacontainer …
● Links
● (1) docker run -d --name database01 …
● (2) docker run -d --name web --link database01:db ...
Marzo 2016 www.opencanarias.com 31
Data Volume Containers
db1
dbstore
db2
--volumes-from
dbstore --volumes-from
dbstore
docker create -v /dbdata --name dbstore ubuntu /bin/true
docker run -d --volumes-from dbstore --name db1 training/postgres
docker run -d --volumes-from dbstore --name db2 training/postgres
/var/lib/docker/volumes/f30d….959c7d/_data
Marzo 2016 www.opencanarias.com 32
Post & Link Containers
HOST
Con EXPOSE:
● Se expone un puerto del
contenedor al host.
-p [<host_port>:]<cont_port>
Cuando se “linkan” dos
contenedores pasan dos
cosas:
● Se crean variables de
entorno
<name>_PORT_<port>_<protocol>
● Se modifica el /etc/hosts docker run -d --name db -p 5432 training/postgres
docker run -it --link db:db -p 80:80 --name myapp ubuntu bash
/etc/hosts
172.17.0.2 db
myapp db
eth0
192.168.1.100
eth0
172.17.0.3
eth0
172.17.0.2
docker0
172.17.0.1
80 5432
80 6789
Delivery con Kubernetes
Marzo 2016 www.opencanarias.com 34
Orquestación
● Diferentes plataformas de orquestación
● Kubernetes (Proyecto de Google, 2014)
● Mesos (Proyecto apache, 2015)
● Docker Swarm (Proyecto de Docker, 2015)
● Kubernetes (2014)
● Plataforma para automatizar el despliegue, escalado y uso
de contenedores sobre un cluster de servidores.
● El sistema es altamente portable (public, private, hybrid,
multi-cloud)
Marzo 2016 www.opencanarias.com 35
Cluster Kubernetes
● El Cluster está compuesto por...
– Número impar de servidores de gestión (>=3)
– Ilimitado número de nodos de trabajo (minions)
● Cita
– “Hay que tratar los servidores como ganado y no como
mascotas”
Marzo 2016 www.opencanarias.com 36
Arquitectura
Microservicios
Estilo Arquitectónico
Marzo 2016 www.opencanarias.com 38
Microservices Architecture
MSA
Fuente: http://martinfowler.com/articles/microservices.html
Marzo 2016 www.opencanarias.com 39
Estructura Organizativa
Marzo 2016 www.opencanarias.com 40
Estructura Organizativa
Marzo 2016 www.opencanarias.com 41
Dockers & MSA
● Cloud Ready
● Simplificación de los
despliegues
● Capacidad de escalado
dinámico y automático
● Portabilidad de las
soluciones
● Reutilización
● Facilita la Integración
Contínua
Ciclo de vida con DevOps
Integracion Continua
con Dockers
Marzo 2016 www.opencanarias.com 43
DevOps
Marzo 2016 www.opencanarias.com 44
Integración Continua
Marzo 2016 www.opencanarias.com 45
Integración Continua
Marzo 2016 www.opencanarias.com 46
Dockers for CI
FROM ubuntu:14.04
MAINTAINER bcuesta@opencanarias.es
ENV REFRESHED_AT 2016-03-01
RUN apt-getupdate -qq && apt-getinstall-qqy curl↩
apt-transport-https
RUN curl https://get.docker.io/gpg | apt-key add -
RUN echo deb http://get.docker.io/ubuntu dockerm ain > /etc/apt/↩
sources.list.d/docker.list
RUN apt-getupdate -qq && apt-getinstall-qqy iptablesca-↩
certificates lxc openjdk-7-jdk git-core lxc-docker
ENV JENKINS_HOME /opt/jenkins/data
ENV JENKINS_MIRROR http://mirrors.jenkins-ci.org
RUN mkdir -p $JENKINS_HOME/plugins
RUN curl-sf-o /opt/jenkins/jenkins.w ar-L $JENKINS_M IRROR/w ar-↩
stable/latest/jenkins.war
RUN forplugin in chucknorrisgreenballsscm -apigit-clientgit↩
ws-cleanup ;
do curl -sf -o $JENKINS_HOME/plugins/${plugin}.hpi 
-L $JENKINS_M IRROR/plugins/${plugin}/latest/${plugin}.hpi↩
; done
ADD ./dockerjenkins.sh /usr/local/bin/dockerjenkins.sh
RUN chmod +x /usr/local/bin/dockerjenkins.sh
VOLUME /var/lib/docker
EXPOSE 8080
ENTRYPOINT [ "/usr/local/bin/dockerjenkins.sh" ]
Fuente: The.Docker.Book. James Turnbull
● $ docker build -t↩
opencanarias/jenkins .
● $ docker run -p 8080:8080↩
--name jenkins↩
--privileged↩
-d opencanarias/jenkins
Marzo 2016 www.opencanarias.com 47
Dockers for CI
Marzo 2016 www.opencanarias.com 48
Dockers for CI
Ejemplos Prácticos
Marzo 2016 www.opencanarias.com 50
Docker LibreOffice
Servidor Linux 1
OpenOffice
2.1
Tomcat 5.5
APP1
Servidor Linux 2
OpenOffice
2.1
Tomcat 5.5
APP2
DocManager
Marzo 2016 www.opencanarias.com 51
Docker LibreOffice
Servidor Linux 1
Tomcat 5.5
APP1
Servidor Linux 2
Tomcat 5.5
APP2
DocManager
Client
Linux
LibreOffice
4.4LibreOffice
4.4LibreOffice
4.4LibreOffice
4.4LibreOffice
4.4
HAProxy
Load
Balancer
DocManager
Server
DocManager
Client
Marzo 2016 www.opencanarias.com 52
Docker LibreOffice
Marzo 2016 www.opencanarias.com 53
Compose
DocManagerData:
image: ubuntu
volumes:
- "/tmp/DOCManager"
- "/tmp/DOCManager/temp"
DocManagerServer:
image:docmanagerserver
links:
- "haproxy:haproxy"
volumes:
- "/usr/local/src/DockerImages/libs:/opt/DOCManagerServer/lib"
volumes_from:
- DocManagerData
ports:
- "1099:1099"
- "1234:1234"
haproxy:
image:haproxy
links:
- "libreoffice:libreoffice"
volumes:
- /etc/haproxy/haproxy.cfg:/etc/haproxy/haproxy.cfg
ports:
- "8997:8997"
- "1936:1936"
libreoffice:
image:libreoffice
environment:
- TCP_PORTS=8997
expose:
- "8997"
volumes_from:
- DocManagerData
Marzo 2016 www.opencanarias.com 54
Compose
DocManagerData:
image: ubuntu
volumes:
- "/tmp/DOCManager"
- "/tmp/DOCManager/temp"
DocManagerServer:
image: docmanagerserver
links:
- "haproxy:haproxy"
volumes:
- "/usr/local/src/DockerImages/libs:/opt/DOCManagerServer/lib"
volumes_from:
- DocManagerData
ports:
- "1099:1099"
- "1234:1234"
haproxy:
image: haproxy
links:
- "libreoffice:libreoffice"
volumes:
- /etc/haproxy/haproxy.cfg:/etc/haproxy/haproxy.cfg
ports:
- "8997:8997"
- "1936:1936"
libreoffice:
image: libreoffice
environment:
- TCP_PORTS=8997
expose:
- "8997"
volumes_from:
- DocManagerData
docker-compose up -d
Marzo 2016 www.opencanarias.com 55
Compose
DocManagerData:
image: ubuntu
volumes:
- "/tmp/DOCManager"
- "/tmp/DOCManager/temp"
DocManagerServer:
image: docmanagerserver
links:
- "haproxy:haproxy"
volumes:
- "/usr/local/src/DockerImages/libs:/opt/DOCManagerServer/lib"
volumes_from:
- DocManagerData
ports:
- "1099:1099"
- "1234:1234"
haproxy:
image: haproxy
links:
- "libreoffice:libreoffice"
volumes:
- /etc/haproxy/haproxy.cfg:/etc/haproxy/haproxy.cfg
ports:
- "8997:8997"
- "1936:1936"
libreoffice:
image: libreoffice
environment:
- TCP_PORTS=8997
expose:
- "8997"
volumes_from:
- DocManagerData
docker-compose scale libreoffice=5
Marzo 2016 www.opencanarias.com 56
Usos de Docker
● Ayudar a que nuestro entorno de desarrollo sea más rápido,
eficiente y más ligero. Los desarrolladores pueden compartir
los contenedores entre ellos.
● Ejecución de micro-servicios y aplicaciones consistentemente
entre diferentes entornos. (AWS, GCE, etc).
● Creación de entornos de test para la integración continua
como Jenkins por ejemplo.
● Creación y prueba de entornos complejos en máquinas
locales, antes de pasarlos a producción.
● Construcción de “sandboxes” ligeras para desarrollo, test, etc.
● SaaS y PaaS
Marzo 2016 www.opencanarias.com 57
Gracias
● info@opencanarias.com
● www.opencanarias.com
● www.linkedin.com/company/open-canarias-sl
● www.facebook.com/opencanarias
● www.google.com/+opencanarias
● @OpenCanarias

More Related Content

What's hot

kubernetes - minikube - getting started
kubernetes - minikube - getting startedkubernetes - minikube - getting started
kubernetes - minikube - getting started
Munish Mehta
 

What's hot (20)

kubernetes - minikube - getting started
kubernetes - minikube - getting startedkubernetes - minikube - getting started
kubernetes - minikube - getting started
 
Docker, LinuX Container
Docker, LinuX ContainerDocker, LinuX Container
Docker, LinuX Container
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Docker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and ContainersDocker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and Containers
 
Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introduction
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
docker installation and basics
docker installation and basicsdocker installation and basics
docker installation and basics
 
Docker and kubernetes
Docker and kubernetesDocker and kubernetes
Docker and kubernetes
 
Docker introduction for the beginners
Docker introduction for the beginnersDocker introduction for the beginners
Docker introduction for the beginners
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Ansible
AnsibleAnsible
Ansible
 
Kubernetes #1 intro
Kubernetes #1   introKubernetes #1   intro
Kubernetes #1 intro
 
Docker in real life
Docker in real lifeDocker in real life
Docker in real life
 
Docker Networking Deep Dive
Docker Networking Deep DiveDocker Networking Deep Dive
Docker Networking Deep Dive
 
Docker & Kubernetes intro
Docker & Kubernetes introDocker & Kubernetes intro
Docker & Kubernetes intro
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
NGINX Kubernetes Ingress Controller: Getting Started – EMEA
NGINX Kubernetes Ingress Controller: Getting Started – EMEANGINX Kubernetes Ingress Controller: Getting Started – EMEA
NGINX Kubernetes Ingress Controller: Getting Started – EMEA
 

Viewers also liked (6)

Contenedores como Servicio con Docker
Contenedores como Servicio con DockerContenedores como Servicio con Docker
Contenedores como Servicio con Docker
 
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Comenzando con Docker en AWS
Comenzando con Docker en AWSComenzando con Docker en AWS
Comenzando con Docker en AWS
 
Seminario: Docker y su Ecosistema
Seminario: Docker y su EcosistemaSeminario: Docker y su Ecosistema
Seminario: Docker y su Ecosistema
 
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
 

Similar to Introducción a Docker

Similar to Introducción a Docker (20)

TECNIRIS47-1b.pdf
TECNIRIS47-1b.pdfTECNIRIS47-1b.pdf
TECNIRIS47-1b.pdf
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJC
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualización
 
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
 
Workshop docker: Iniciando en el Mundo de los Contenedores
Workshop docker: Iniciando en el Mundo de los ContenedoresWorkshop docker: Iniciando en el Mundo de los Contenedores
Workshop docker: Iniciando en el Mundo de los Contenedores
 
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
 
Docker4developers Codemotion2016
Docker4developers Codemotion2016Docker4developers Codemotion2016
Docker4developers Codemotion2016
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacion
 
De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando docker
 
Introduction to docker. Stratio
Introduction to docker. StratioIntroduction to docker. Stratio
Introduction to docker. Stratio
 
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
 
DockerCon 2022 Spanish Room-ONBOARDING.pdf
DockerCon 2022 Spanish Room-ONBOARDING.pdfDockerCon 2022 Spanish Room-ONBOARDING.pdf
DockerCon 2022 Spanish Room-ONBOARDING.pdf
 
Docker para desarrolladores .NET
Docker para desarrolladores .NETDocker para desarrolladores .NET
Docker para desarrolladores .NET
 
Docker and networking
Docker and networkingDocker and networking
Docker and networking
 
Desarrollando una Extensión para Docker
Desarrollando una Extensión para DockerDesarrollando una Extensión para Docker
Desarrollando una Extensión para Docker
 
Docker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 Huancayo
 
Jug málaga docker 101 - final
Jug málaga   docker 101 - finalJug málaga   docker 101 - final
Jug málaga docker 101 - final
 
Migrando CI a Docker
Migrando CI a DockerMigrando CI a Docker
Migrando CI a Docker
 
Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetes
 
Seminario CLEFormacion-docker
Seminario CLEFormacion-dockerSeminario CLEFormacion-docker
Seminario CLEFormacion-docker
 

More from Open Canarias

More from Open Canarias (7)

Presentación corporativa
Presentación corporativaPresentación corporativa
Presentación corporativa
 
Experiencia práctica con ITIL
Experiencia práctica con ITILExperiencia práctica con ITIL
Experiencia práctica con ITIL
 
Migración a LibreOffice
Migración a LibreOfficeMigración a LibreOffice
Migración a LibreOffice
 
LibreOffice from Collabora
LibreOffice from CollaboraLibreOffice from Collabora
LibreOffice from Collabora
 
Modernización Dirigida por la Arquitectura
Modernización Dirigida por la ArquitecturaModernización Dirigida por la Arquitectura
Modernización Dirigida por la Arquitectura
 
Migración de Oracle a PostgreSQL
Migración de Oracle a PostgreSQLMigración de Oracle a PostgreSQL
Migración de Oracle a PostgreSQL
 
Inforsalud Recap Open Canarias 2014
Inforsalud Recap Open Canarias 2014Inforsalud Recap Open Canarias 2014
Inforsalud Recap Open Canarias 2014
 

Recently uploaded

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Recently uploaded (15)

Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 

Introducción a Docker

  • 1. Introducción a Docker Benito Cuesta – Salvador González 1 de Marzo de 2016
  • 2. Marzo 2016 www.opencanarias.com 2 ● Experiencia del INTA con Docker (6 min) – Jesús Garrido (INTA) – Antonio Lara (INTA) ● Introducción a Docker (1 h 27 min) – Benito Cuesta (Open Canarias) – Salvador González (Open Canarias)
  • 3. Marzo 2016 www.opencanarias.com 3 Índice ● Presentación ● Dockers: Definición y características ● Getting Started ● Delivery con Kubernetes ● Microservicios. Estilo arquitectónico. Ventajas de dockers para una arquitectura de microservicios ● Ciclo de vida con Devops / Integración Continua ● Caso práctico: Cluster de LibreOffice con Docker
  • 5. Marzo 2016 www.opencanarias.com 5 Open Canarias Empresa de servicios y suministros TIC fundada en 1996 Actualmente tiene implantación nacional y con presencia internacional en México Está especializada en productos y servicios TI, además de proyectos de alto riesgo tecnológico Business Partner de IBM Áreas de servicio Servicios de Ingeniería del Software Servicios de Infraestructura TIC Servicios externos
  • 6. Marzo 2016 www.opencanarias.com 6 Servicios de Ingeniería del Software Proporcionan soluciones a diferentes aspectos del ciclo de vida de aplicaciones, con especial énfasis en el incremento de la productividad y la calidad en los procesos y productos de trabajo vinculados a dicho ciclo de vida Fundamentan estas soluciones en las capacidades en MDE (Model Driven Engineering), un nuevo paradigma de la Ingeniería del Software en el que Open Canarias ha sido pionero y contribuidor a varios estándares Con MDE se construyen herramientas que automatizan procesos y tareas del ciclo de vida del software, reduciendo los tiempos de entrega, al mismo tiempo que se mejora la calidad al reducir las tareas manuales propensas a errores EstructuradelosServicios Desarrollo de Herramientas Modernización del Software Aseguramiento de la calidad
  • 7. Marzo 2016 www.opencanarias.com 7 Antes de empezar... ● “La complejidad cada vez mayor de las aplicaciones y la necesidad de acelerar el desarrollo están ejerciendo aún más presión sobre la infraestructura, procesos y equipos de TI.” ● https://www.redhat.com/es/insights/containers
  • 8. Marzo 2016 www.opencanarias.com 8 Otra cita... ● “Los líderes en I&O deben mejorar las estrategias de implementación de servidores o crearán infraestructuras incapaces de dar soporte a la siguiente generación de aplicaciones.” – IT market clock for server virtualization and operanting environments – 16/09/2014. GARTNER N.º: G00262842
  • 9. Marzo 2016 www.opencanarias.com 9 Un buen libro para empezar ● The Docker Book – James Turnbull – Agosto, 2014 – www.dockerbook.com
  • 11. Marzo 2016 www.opencanarias.com 11 ¿Qué es docker? ● “Es un proyecto open source para empaquetar, transportar y ejecutar cualquier aplicación como un contenedor ligero”. ● Su versión inicial se publica el 13 de Marzo de 2013 y está escrito en el lenguaje GO. ● Se trata de un nuevo modelo de virtualización que crea una capa de abstracción con el S.O. ● Un contenedor conforma el contexto de ejecución de una aplicación. Está compuesto de: ● Sistema de ficheros ● Procesos ● Memoria ● … y todo aislado del S.O huésped
  • 12. Marzo 2016 www.opencanarias.com 12 Componentes ● Libcontainer (Derivado de LXC). ● Linux kernel namespaces (aislamiento del sistema de ficheros, red y procesos). ● Aislamiento de los recursos (Cpu, Memoria, etc) por medio de los cgroups. ● Copy-on-write ● Logging. Salidas de la línea de comando accesibles con el cliente docker. ● Consola interactiva.
  • 13. Marzo 2016 www.opencanarias.com 13 La comunidad de Docker ● 1200 contribuidores al proyecto Docker ● 100,000 aplicaciones dockerizadas ● Entre 3 y 4 millones de desarrolladores usando Docker ● 300 millones de descargas ● 32,000 proyectos relacionados con Docker ● El 70% de las empresas TI están adoptando Docker – Fuente: SD Times
  • 14. Marzo 2016 www.opencanarias.com 14 Nuevo modelo Partes comunes
  • 15. Marzo 2016 www.opencanarias.com 15 Nueva visión del Sistema Operativo ● Con el nuevo modelo de contenedores podemos abstraernos del S.O. donde corre el motor Docker. ● Diseñados para un mundo Cloud, distribuido. ● Los nuevos Sistemas Operativos (BareMetal/Virtual)
  • 16. Marzo 2016 www.opencanarias.com 16 Registro ● Registro – Registro público (Docker Hub) ● > 10.000 imágenes disponibles – Registro privado ● Sólo accesible bajo autorización. Es de pago. ● Registro local – Este registro se instala por medio de un contenedor Docker para centralizar las imágenes de los contenedores
  • 17. Marzo 2016 www.opencanarias.com 17 Ventajas de Dockers Fuente: https://www.redhat.com/es/insights/containers
  • 19. Marzo 2016 www.opencanarias.com 19 Instalación ● En linux se hace uso de los comandos de gestión de paquetes habituales ● Para Windows y Mac se hace uso de un programa llamado “docker-machine” ● Docker es un demonio que expone una interfaz REST
  • 20. Marzo 2016 www.opencanarias.com 20 Linux / Mac / Windows
  • 21. Marzo 2016 www.opencanarias.com 21 Comandos iniciales ● docker (lista los posibles comandos) ● docker version (versión del demonio y del cliente) ● docker info (información del sistema)
  • 22. Marzo 2016 www.opencanarias.com 22 Nuestro primer contenedor ● docker run -i ubuntu echo Hello World – run Ejecutar un contenedor→ – -i Modo interactivo→ – ubuntu Imagen a usar en el contenedor→ – echo Hello World Comando a ejecutar→ ● Flujo: – Busca la imagen localmente, luego en repositorios centrales.
  • 23. Marzo 2016 www.opencanarias.com 23 Imágenes ● Una imagen está formada por capas (layers) que se montan unas encima de otras. Todas en modo sólo lectura. ● La última capa se monta como lectura/escritura y da lugar al contenedor. ● Las capas usan el patrón “copy on write”
  • 24. Marzo 2016 www.opencanarias.com 24 Comandos imágenes ● docker images ● docker run -t -i --name test01 ubuntu /bin/bash (ubuntu:latest) ● docker run -t -i --name test02 centos:centos6 /bin/bash ● docker pull ubuntu:14.04 ● docker pull sgonzalez/centosopen:centos5 ● docker search centos
  • 25. Marzo 2016 www.opencanarias.com 25 Crear imágenes ● docker commit (no recomendado) – docker run -it centos /bin/bash – yum upgrade && yum install httpd – vi /var/www/html/index.html – exit – docker commit <containerID> sgonzalez/apache:webopen ● docker build – Consiste en un fichero (Dockerfile) de instrucciones para construir las imágenes
  • 26. Marzo 2016 www.opencanarias.com 26 Dockerfile ● Comandos más habituales – FROM De que imagen partimos para crear la nueva→ – MAINTEINER Quien mantiene el contenedor→ – RUN Ejecuta una instrucción en el contenedor→ – ADD Añade un fichero o carpeta al contenedor→ – ENV Establece una variable de entorno en el contenedo→ – EXPOSE Indica que se va a exponer un puerto del→ contenedor – ENTRYPOINT / CMD Qué se ejecuta→
  • 27. Marzo 2016 www.opencanarias.com 27 entrypoint / cmd ● ENTRYPOINT define el proceso a ejecutar – Por defecto es “/bin/sh -c” ● CMD son los parámetros del proceso ● Por ejemplo: – CMD [“/usr/bin/top”] – docker run -i -t myubuntu (/bin/sh -c /usr/bin/top) – docker run -i -t myubuntu bash (/bin/sh -c bash) – ENTRYPOINT ["/bin/cat"] – docker run -it catimg /etc/passwd (/bin/cat /etc/passwd)
  • 28. Marzo 2016 www.opencanarias.com 28 Contenedores ● Hacen uso de una imagen como base y pueden contener uno o más procesos. ● Un contenedor Docker es: – Una instancia de una imagen Docker – Un conjunto de operaciones asociadas a su ciclo de vida: ● Crear, Destruir, Arrancar, Reiniciar o Parar – Un entorno de ejecución
  • 29. Marzo 2016 www.opencanarias.com 29 Comandos contenedores ● docker run -d ubuntu /bin/sh -c "while true; do echo Hello World; sleep 1; done" docker ps [-a] docker inspect <ID> docker attach <ID> docker stop <ID> docker start <ID> docker rm [-f] <ID> docker logs [-f] <ID> docker create <image> docker top <ID> docker build [-f dockerfile] <dir> docker exec <ID> <cmd> docker load / save
  • 30. Marzo 2016 www.opencanarias.com 30 Uso de contenedores ● Data Volumes – Dockerfile ● VOLUME [ “/var/log/http” ] – Docker run ● docker run -v [rutahost:]rutacontenedor[:rw,:ro] ● Data Volume Containers ● docker run --volumes-from datacontainer … ● Links ● (1) docker run -d --name database01 … ● (2) docker run -d --name web --link database01:db ...
  • 31. Marzo 2016 www.opencanarias.com 31 Data Volume Containers db1 dbstore db2 --volumes-from dbstore --volumes-from dbstore docker create -v /dbdata --name dbstore ubuntu /bin/true docker run -d --volumes-from dbstore --name db1 training/postgres docker run -d --volumes-from dbstore --name db2 training/postgres /var/lib/docker/volumes/f30d….959c7d/_data
  • 32. Marzo 2016 www.opencanarias.com 32 Post & Link Containers HOST Con EXPOSE: ● Se expone un puerto del contenedor al host. -p [<host_port>:]<cont_port> Cuando se “linkan” dos contenedores pasan dos cosas: ● Se crean variables de entorno <name>_PORT_<port>_<protocol> ● Se modifica el /etc/hosts docker run -d --name db -p 5432 training/postgres docker run -it --link db:db -p 80:80 --name myapp ubuntu bash /etc/hosts 172.17.0.2 db myapp db eth0 192.168.1.100 eth0 172.17.0.3 eth0 172.17.0.2 docker0 172.17.0.1 80 5432 80 6789
  • 34. Marzo 2016 www.opencanarias.com 34 Orquestación ● Diferentes plataformas de orquestación ● Kubernetes (Proyecto de Google, 2014) ● Mesos (Proyecto apache, 2015) ● Docker Swarm (Proyecto de Docker, 2015) ● Kubernetes (2014) ● Plataforma para automatizar el despliegue, escalado y uso de contenedores sobre un cluster de servidores. ● El sistema es altamente portable (public, private, hybrid, multi-cloud)
  • 35. Marzo 2016 www.opencanarias.com 35 Cluster Kubernetes ● El Cluster está compuesto por... – Número impar de servidores de gestión (>=3) – Ilimitado número de nodos de trabajo (minions) ● Cita – “Hay que tratar los servidores como ganado y no como mascotas”
  • 38. Marzo 2016 www.opencanarias.com 38 Microservices Architecture MSA Fuente: http://martinfowler.com/articles/microservices.html
  • 39. Marzo 2016 www.opencanarias.com 39 Estructura Organizativa
  • 40. Marzo 2016 www.opencanarias.com 40 Estructura Organizativa
  • 41. Marzo 2016 www.opencanarias.com 41 Dockers & MSA ● Cloud Ready ● Simplificación de los despliegues ● Capacidad de escalado dinámico y automático ● Portabilidad de las soluciones ● Reutilización ● Facilita la Integración Contínua
  • 42. Ciclo de vida con DevOps Integracion Continua con Dockers
  • 44. Marzo 2016 www.opencanarias.com 44 Integración Continua
  • 45. Marzo 2016 www.opencanarias.com 45 Integración Continua
  • 46. Marzo 2016 www.opencanarias.com 46 Dockers for CI FROM ubuntu:14.04 MAINTAINER bcuesta@opencanarias.es ENV REFRESHED_AT 2016-03-01 RUN apt-getupdate -qq && apt-getinstall-qqy curl↩ apt-transport-https RUN curl https://get.docker.io/gpg | apt-key add - RUN echo deb http://get.docker.io/ubuntu dockerm ain > /etc/apt/↩ sources.list.d/docker.list RUN apt-getupdate -qq && apt-getinstall-qqy iptablesca-↩ certificates lxc openjdk-7-jdk git-core lxc-docker ENV JENKINS_HOME /opt/jenkins/data ENV JENKINS_MIRROR http://mirrors.jenkins-ci.org RUN mkdir -p $JENKINS_HOME/plugins RUN curl-sf-o /opt/jenkins/jenkins.w ar-L $JENKINS_M IRROR/w ar-↩ stable/latest/jenkins.war RUN forplugin in chucknorrisgreenballsscm -apigit-clientgit↩ ws-cleanup ; do curl -sf -o $JENKINS_HOME/plugins/${plugin}.hpi -L $JENKINS_M IRROR/plugins/${plugin}/latest/${plugin}.hpi↩ ; done ADD ./dockerjenkins.sh /usr/local/bin/dockerjenkins.sh RUN chmod +x /usr/local/bin/dockerjenkins.sh VOLUME /var/lib/docker EXPOSE 8080 ENTRYPOINT [ "/usr/local/bin/dockerjenkins.sh" ] Fuente: The.Docker.Book. James Turnbull ● $ docker build -t↩ opencanarias/jenkins . ● $ docker run -p 8080:8080↩ --name jenkins↩ --privileged↩ -d opencanarias/jenkins
  • 47. Marzo 2016 www.opencanarias.com 47 Dockers for CI
  • 48. Marzo 2016 www.opencanarias.com 48 Dockers for CI
  • 50. Marzo 2016 www.opencanarias.com 50 Docker LibreOffice Servidor Linux 1 OpenOffice 2.1 Tomcat 5.5 APP1 Servidor Linux 2 OpenOffice 2.1 Tomcat 5.5 APP2 DocManager
  • 51. Marzo 2016 www.opencanarias.com 51 Docker LibreOffice Servidor Linux 1 Tomcat 5.5 APP1 Servidor Linux 2 Tomcat 5.5 APP2 DocManager Client Linux LibreOffice 4.4LibreOffice 4.4LibreOffice 4.4LibreOffice 4.4LibreOffice 4.4 HAProxy Load Balancer DocManager Server DocManager Client
  • 52. Marzo 2016 www.opencanarias.com 52 Docker LibreOffice
  • 53. Marzo 2016 www.opencanarias.com 53 Compose DocManagerData: image: ubuntu volumes: - "/tmp/DOCManager" - "/tmp/DOCManager/temp" DocManagerServer: image:docmanagerserver links: - "haproxy:haproxy" volumes: - "/usr/local/src/DockerImages/libs:/opt/DOCManagerServer/lib" volumes_from: - DocManagerData ports: - "1099:1099" - "1234:1234" haproxy: image:haproxy links: - "libreoffice:libreoffice" volumes: - /etc/haproxy/haproxy.cfg:/etc/haproxy/haproxy.cfg ports: - "8997:8997" - "1936:1936" libreoffice: image:libreoffice environment: - TCP_PORTS=8997 expose: - "8997" volumes_from: - DocManagerData
  • 54. Marzo 2016 www.opencanarias.com 54 Compose DocManagerData: image: ubuntu volumes: - "/tmp/DOCManager" - "/tmp/DOCManager/temp" DocManagerServer: image: docmanagerserver links: - "haproxy:haproxy" volumes: - "/usr/local/src/DockerImages/libs:/opt/DOCManagerServer/lib" volumes_from: - DocManagerData ports: - "1099:1099" - "1234:1234" haproxy: image: haproxy links: - "libreoffice:libreoffice" volumes: - /etc/haproxy/haproxy.cfg:/etc/haproxy/haproxy.cfg ports: - "8997:8997" - "1936:1936" libreoffice: image: libreoffice environment: - TCP_PORTS=8997 expose: - "8997" volumes_from: - DocManagerData docker-compose up -d
  • 55. Marzo 2016 www.opencanarias.com 55 Compose DocManagerData: image: ubuntu volumes: - "/tmp/DOCManager" - "/tmp/DOCManager/temp" DocManagerServer: image: docmanagerserver links: - "haproxy:haproxy" volumes: - "/usr/local/src/DockerImages/libs:/opt/DOCManagerServer/lib" volumes_from: - DocManagerData ports: - "1099:1099" - "1234:1234" haproxy: image: haproxy links: - "libreoffice:libreoffice" volumes: - /etc/haproxy/haproxy.cfg:/etc/haproxy/haproxy.cfg ports: - "8997:8997" - "1936:1936" libreoffice: image: libreoffice environment: - TCP_PORTS=8997 expose: - "8997" volumes_from: - DocManagerData docker-compose scale libreoffice=5
  • 56. Marzo 2016 www.opencanarias.com 56 Usos de Docker ● Ayudar a que nuestro entorno de desarrollo sea más rápido, eficiente y más ligero. Los desarrolladores pueden compartir los contenedores entre ellos. ● Ejecución de micro-servicios y aplicaciones consistentemente entre diferentes entornos. (AWS, GCE, etc). ● Creación de entornos de test para la integración continua como Jenkins por ejemplo. ● Creación y prueba de entornos complejos en máquinas locales, antes de pasarlos a producción. ● Construcción de “sandboxes” ligeras para desarrollo, test, etc. ● SaaS y PaaS
  • 57. Marzo 2016 www.opencanarias.com 57 Gracias ● info@opencanarias.com ● www.opencanarias.com ● www.linkedin.com/company/open-canarias-sl ● www.facebook.com/opencanarias ● www.google.com/+opencanarias ● @OpenCanarias