DOCKER PARA DUMMIES
BY RAUL UNZUE (BLOG MAQUINAS VIRTUALES – EL BLOG DE NEGU)
TEMARIO
Conceptos Cloud Computing
Virtualización
¿Qué es un Docker?
Historia Docker
Ventajas y Desventajas Docker
Containers
Kubernetes
Openshift
CLOUD COMPUTING
• El cloud computing se suele
representar con un diagrama en el
que se muestra una nube que
representa una capa de servicios
gestionadas por un proveedor a
las que el usuario accede.
• Dentro de esa nube se incluyen
distintos elementos como pueden
ser servidores, almacenamiento,
red, aplicaciones u otros servicios.
CLOUD COMPUTING
• Existen varios modelos de nubes dependiendo de los servicios ofrecidos:
 SaaS: Software as a Service: proporciona al usuario la posibilidad de utilizar aplicaciones en
un entorno de nube, por ejemplo aplicaciones de correo web. Por ejemplo: GMail, Hotmail,
Twitter, Facebook…
 PaaS: Platform as a Service: proporciona al usuario la posibilidad de desplegar
aplicaciones a través de lenguajes de programación o herramientas proporcionados por el
proveedor de la nube. Por ejemplo, Openshift de RedHat, Google App Engine o Microsoft
Azure
 IaaS: Infraestructure as a Service: proporciona la infraestructura como pueden ser
servidores, red, almacenamiento.. utilizados por los usuarios para ejecutar sistemas
operativos o aplicaciones. Por ejemplo: Hyper-V, Amazon Web Services (ECS), Openstack o
VMware vCloud
 CaaS: Container as a Service: es un concepto relativamente moderno, entre Iaas y PaaS. Se
basa en disponer de contenedores bajo demanda. Por ejemplo: Docker y Kubernetes
 FaasS: Function as a Service: proporciona una infraestructura que permite desarrollar
distintas funcionalidades de aplicaciones sin tener que mantener dicha infraestructura. Por
ejemplo: AWS (Lamda), Vmware Pivotal Container Service o Google Cloud Function
CLOUD COMPUTING
• Dependiendo del modelo de la nube y la propiedad
respecto al usuario existen varios tipos:
 Nubes privadas: son accesibles por una única
organización. Generalmente administradas por un
departamento de la organización, proporciona al
resto de departamentos la infraestructura para la
ejecución de los servicios y aplicaciones. La
propiedad de la infraestructura es de la propia
organización.
 Nubes públicas: son infraestructuras cuyos
propietarios ponen a disposición de otras
organizaciones o del público en general.
 Nubes híbridas: hace referencia a entornos con
varias infraestructuras de nube, publicas o privadas
que interactúan entre sí, de forma que puedas utilizar
las distintas nubes según las necesidades concretas.
VIRTUALIZACION
• ¿Qué es la Virtualización?
“Es la abstracción de los recursos de un
servidor de forma que se crea una capa
entre el hardware de la máquina física
(host o hypervisor) y el sistema operativo
de la máquina virtual (guest)”
La Virtualización es fundamental en Cloud
Computing, ya que reduce la utilización de
hardware, la energía consumida y los costes
de mantenimiento. Adicionalmente, permite
la ejecución de múltiples aplicaciones y
sistemas operativos en el mismo servidor,
aumentando la eficiencia y la productividad.
DOCKER
• Definición: es un entorno de
virtualización ligero que te
permite construir y ejecutar
aplicaciones dentro de un
contenedor de software aislado.
• No se apoya en un hypervisor
como la virtualización tradicional,
se puede considerar una
aplicación dentro del servidor.
DOCKER
• HISTORIA: Se trata de un proyecto de código abierto,
que comenzó Salomón Hykes como proyecto interno
dentro de la empresa dotCloud. Liberado como en
Marzo de 2013. En menos de 2 años era uno de los
proyectos estrella de GitHub. Actualmente, en 2018,
empresas como RedHat, Google, Microsoft, IBM o Cisco
son las que más contribuyen al proyecto.
• LINUX:
 En las distribuciones Linux se utiliza el kernel del host para
lanzar procesos independientes en el sistema. Se instala a
través de los repositorios de las diferentes distribuciones.
• WINDOWS:
 Instalados a partir de Windows Server 2016 como una
característica.
• De momento, no se pueden ejecutar contenedores
Linux en Windows y viceversa, directamente.
DOCKER
DOCKER
• Un sistema de contenedores Docker se compone principalmente estos
elementos:
 Demonio: Es el proceso principal de la plataforma.
 Cliente: Es el binario que constituye la interfaz y que permite al usuario interactuar con el
Demonio.
 Imagen: Plantilla utilizada para crear el contenedor para la aplicación que queremos
ejecutar.
 Registros: Directorios donde se almacenan las imágenes, tanto de acceso público como
privado.
 Contenedores: Instancias en ejecución de una imagen, donde se almacena todo lo
necesario (librerías, dependencias, binarios, etc) para que la aplicación pueda ejecutarse de
forma aislada.
 Links: Sirven para enlazar contenedores entre sí.
 Volumes: Sirven para almacenar datos persistentes de un contenedor de Docker.
• Docker también cuenta con una serie de repositorios, similares a los de Linux.
DOCKER
• Docker Engine: permite que las aplicaciones en contenedores
se ejecuten en cualquier lugar y de forma consistente,
independientemente del hardware o sistema operativo que la
ejecute.
• Docker-Compose: herramienta para automatizar la ejecutación
de aplicaciones de múltiples contenedores simultáneamente.
Utiliza ficheros YAML.
• Dockerfile: es un fichero de texto que permite generar una
imagen personalizada (incluye todos los comandos para ello)
mediante el comando “docker build”.
• Docker Swarm: herramienta nativa que permite construir un
clúster de máquinas Docker.
DOCKER
• Existen dos versiones principales:
 Docker EE (Enterprise Edition): Versión de
pago con soporte de 24 meses (parches críticos)
en cada versión. API más robusta y certificación
en algunos sistemas operativos. Ideal para
sistemas críticos para el negocio y grandes
proyectos.
 Docker CS (Custom Supported): Como Docker
EE pero para versiones inferiores a 1.13.
 Docker CE (Community Edition): Sin soporte y
de código abierto. Ideal para pequeños
proyectos o desarrolladores.
DOCKER
• VENTAJAS:
• Rapidez de implementación, ligereza, compatibilidad, portabilidad y
mantenimiento
• Estandarización infraestructura (se puede replicar fácilmente DES,
PRE o PRO)
• Seguridad. Aplicaciones aisladas. Cada contenedor dispone de sus
propios recursos. Ningún contenedor ve los procesos de otro
contenedor.
• Fácilmente escalable.
• DESVENTAJAS:
• No pueden sustituir por completo la virtualización tradicional y no
todo el mundo dispone de un modelo de negocio que sea
compatible
CONTAINERS
• Un container o contenedor es una unidad estándar de
software que empaqueta el código y todas sus
dependencias para que la aplicación se ejecute de forma
rápida y confiable de un entorno informático a otro.
• Una imagen de contenedor de Docker es un paquete de
software liviano, independiente y ejecutable que incluye
todo lo necesario para ejecutar una aplicación: código,
tiempo de ejecución, herramientas del sistema, bibliotecas
del sistema y configuraciones.
• Se ejecutan de la misma forma tanto en Linux como en
Windows
KUBERNETES
• Docker permite ejecutar contenedores a pequeña escala.
Kubernetes complementaría a Docker cuando se quiere
realizar a gran escala, clusterizando recursos y trabajando
con múltiples servidores.
• Kubernetes(K8S) fue diseñado inicialmente por Google,
para la automatización de despliegues, el escalado y la
gestión de aplicaciones contenerizadas.
KUBERNETES
• PRINCIPALES CARACTERISTICAS KUBERNETES:
 Autoescalado: Según el uso de CPU permite un escalado manual o automático de las aplicaciones de
forma vertical.
 Balanceo de carga: Kubernetes asigna IP y nombre en DNS a un conjunto de contenedores y permite el
balanceo entre ellos.
 Auto-reparación: Si fallan contenedores puede reiniciarlos, pararlos o reemplazarlos automáticamente.
 Despliegues: Se puede programar despliegues y monitorizar su salud, haciendo un rollback automático
si algo ha ido mal.
 Ahorro de recursos: Decide en qué nodo se ejecutará cada contenedor según sus características o
restricciones.
 Seguridad: Las contraseñas y otros datos sensibles son ocultados de forma segura.
 Almacenamiento: Es capaz de montar automáticamente almacenamiento de red o local según
necesidad
OPENSHIFT
• Interfaz web mucho más fácil de entender en Openshift para principiantes. Uno de los problemas de
Kubernetes es que su interfaz web no aporta demasiado con respecto a la consola de comandos.
Openshift es mucho más intuitivo y manejable.
• OpenShift es un producto de computación en la nube de plataforma como servicio (PaaS) de RedHat.
Se basa en Docker y Kubernetes, pero añade una nueva capa.
• Aunque está basado en código abierto, y existen versiones gratuitas, no deja de ser un producto de
RedHat. Lo que en su versión de pago te da acceso a uno de los mejores soportes del mercado. Si
necesitas soporte en Kubernetes, Openshift sería la alternativa.
• Añade capa de seguridad extra a Kubernetes. Facilita la integración Directorio Activo, por ejemplo. O
no deja instalar ciertas imágenes o utilizar el usuario root.
• Dispone de componentes de monitorización
• Gestión más avanzada del Networking
• Mejora las opciones en los despliegues con respecto a Kubernetes con DeploymentConfig
• Gestión de imágenes de contenedores con ImageStreams
• Jenkins integrado
RUEGOS Y PREGUNTAS

Docker para Dummies

  • 1.
    DOCKER PARA DUMMIES BYRAUL UNZUE (BLOG MAQUINAS VIRTUALES – EL BLOG DE NEGU)
  • 2.
    TEMARIO Conceptos Cloud Computing Virtualización ¿Quées un Docker? Historia Docker Ventajas y Desventajas Docker Containers Kubernetes Openshift
  • 3.
    CLOUD COMPUTING • Elcloud computing se suele representar con un diagrama en el que se muestra una nube que representa una capa de servicios gestionadas por un proveedor a las que el usuario accede. • Dentro de esa nube se incluyen distintos elementos como pueden ser servidores, almacenamiento, red, aplicaciones u otros servicios.
  • 4.
    CLOUD COMPUTING • Existenvarios modelos de nubes dependiendo de los servicios ofrecidos:  SaaS: Software as a Service: proporciona al usuario la posibilidad de utilizar aplicaciones en un entorno de nube, por ejemplo aplicaciones de correo web. Por ejemplo: GMail, Hotmail, Twitter, Facebook…  PaaS: Platform as a Service: proporciona al usuario la posibilidad de desplegar aplicaciones a través de lenguajes de programación o herramientas proporcionados por el proveedor de la nube. Por ejemplo, Openshift de RedHat, Google App Engine o Microsoft Azure  IaaS: Infraestructure as a Service: proporciona la infraestructura como pueden ser servidores, red, almacenamiento.. utilizados por los usuarios para ejecutar sistemas operativos o aplicaciones. Por ejemplo: Hyper-V, Amazon Web Services (ECS), Openstack o VMware vCloud  CaaS: Container as a Service: es un concepto relativamente moderno, entre Iaas y PaaS. Se basa en disponer de contenedores bajo demanda. Por ejemplo: Docker y Kubernetes  FaasS: Function as a Service: proporciona una infraestructura que permite desarrollar distintas funcionalidades de aplicaciones sin tener que mantener dicha infraestructura. Por ejemplo: AWS (Lamda), Vmware Pivotal Container Service o Google Cloud Function
  • 6.
    CLOUD COMPUTING • Dependiendodel modelo de la nube y la propiedad respecto al usuario existen varios tipos:  Nubes privadas: son accesibles por una única organización. Generalmente administradas por un departamento de la organización, proporciona al resto de departamentos la infraestructura para la ejecución de los servicios y aplicaciones. La propiedad de la infraestructura es de la propia organización.  Nubes públicas: son infraestructuras cuyos propietarios ponen a disposición de otras organizaciones o del público en general.  Nubes híbridas: hace referencia a entornos con varias infraestructuras de nube, publicas o privadas que interactúan entre sí, de forma que puedas utilizar las distintas nubes según las necesidades concretas.
  • 7.
    VIRTUALIZACION • ¿Qué esla Virtualización? “Es la abstracción de los recursos de un servidor de forma que se crea una capa entre el hardware de la máquina física (host o hypervisor) y el sistema operativo de la máquina virtual (guest)” La Virtualización es fundamental en Cloud Computing, ya que reduce la utilización de hardware, la energía consumida y los costes de mantenimiento. Adicionalmente, permite la ejecución de múltiples aplicaciones y sistemas operativos en el mismo servidor, aumentando la eficiencia y la productividad.
  • 8.
    DOCKER • Definición: esun entorno de virtualización ligero que te permite construir y ejecutar aplicaciones dentro de un contenedor de software aislado. • No se apoya en un hypervisor como la virtualización tradicional, se puede considerar una aplicación dentro del servidor.
  • 9.
    DOCKER • HISTORIA: Setrata de un proyecto de código abierto, que comenzó Salomón Hykes como proyecto interno dentro de la empresa dotCloud. Liberado como en Marzo de 2013. En menos de 2 años era uno de los proyectos estrella de GitHub. Actualmente, en 2018, empresas como RedHat, Google, Microsoft, IBM o Cisco son las que más contribuyen al proyecto. • LINUX:  En las distribuciones Linux se utiliza el kernel del host para lanzar procesos independientes en el sistema. Se instala a través de los repositorios de las diferentes distribuciones. • WINDOWS:  Instalados a partir de Windows Server 2016 como una característica. • De momento, no se pueden ejecutar contenedores Linux en Windows y viceversa, directamente.
  • 10.
  • 11.
    DOCKER • Un sistemade contenedores Docker se compone principalmente estos elementos:  Demonio: Es el proceso principal de la plataforma.  Cliente: Es el binario que constituye la interfaz y que permite al usuario interactuar con el Demonio.  Imagen: Plantilla utilizada para crear el contenedor para la aplicación que queremos ejecutar.  Registros: Directorios donde se almacenan las imágenes, tanto de acceso público como privado.  Contenedores: Instancias en ejecución de una imagen, donde se almacena todo lo necesario (librerías, dependencias, binarios, etc) para que la aplicación pueda ejecutarse de forma aislada.  Links: Sirven para enlazar contenedores entre sí.  Volumes: Sirven para almacenar datos persistentes de un contenedor de Docker. • Docker también cuenta con una serie de repositorios, similares a los de Linux.
  • 12.
    DOCKER • Docker Engine:permite que las aplicaciones en contenedores se ejecuten en cualquier lugar y de forma consistente, independientemente del hardware o sistema operativo que la ejecute. • Docker-Compose: herramienta para automatizar la ejecutación de aplicaciones de múltiples contenedores simultáneamente. Utiliza ficheros YAML. • Dockerfile: es un fichero de texto que permite generar una imagen personalizada (incluye todos los comandos para ello) mediante el comando “docker build”. • Docker Swarm: herramienta nativa que permite construir un clúster de máquinas Docker.
  • 13.
    DOCKER • Existen dosversiones principales:  Docker EE (Enterprise Edition): Versión de pago con soporte de 24 meses (parches críticos) en cada versión. API más robusta y certificación en algunos sistemas operativos. Ideal para sistemas críticos para el negocio y grandes proyectos.  Docker CS (Custom Supported): Como Docker EE pero para versiones inferiores a 1.13.  Docker CE (Community Edition): Sin soporte y de código abierto. Ideal para pequeños proyectos o desarrolladores.
  • 14.
    DOCKER • VENTAJAS: • Rapidezde implementación, ligereza, compatibilidad, portabilidad y mantenimiento • Estandarización infraestructura (se puede replicar fácilmente DES, PRE o PRO) • Seguridad. Aplicaciones aisladas. Cada contenedor dispone de sus propios recursos. Ningún contenedor ve los procesos de otro contenedor. • Fácilmente escalable. • DESVENTAJAS: • No pueden sustituir por completo la virtualización tradicional y no todo el mundo dispone de un modelo de negocio que sea compatible
  • 15.
    CONTAINERS • Un containero contenedor es una unidad estándar de software que empaqueta el código y todas sus dependencias para que la aplicación se ejecute de forma rápida y confiable de un entorno informático a otro. • Una imagen de contenedor de Docker es un paquete de software liviano, independiente y ejecutable que incluye todo lo necesario para ejecutar una aplicación: código, tiempo de ejecución, herramientas del sistema, bibliotecas del sistema y configuraciones. • Se ejecutan de la misma forma tanto en Linux como en Windows
  • 16.
    KUBERNETES • Docker permiteejecutar contenedores a pequeña escala. Kubernetes complementaría a Docker cuando se quiere realizar a gran escala, clusterizando recursos y trabajando con múltiples servidores. • Kubernetes(K8S) fue diseñado inicialmente por Google, para la automatización de despliegues, el escalado y la gestión de aplicaciones contenerizadas.
  • 17.
    KUBERNETES • PRINCIPALES CARACTERISTICASKUBERNETES:  Autoescalado: Según el uso de CPU permite un escalado manual o automático de las aplicaciones de forma vertical.  Balanceo de carga: Kubernetes asigna IP y nombre en DNS a un conjunto de contenedores y permite el balanceo entre ellos.  Auto-reparación: Si fallan contenedores puede reiniciarlos, pararlos o reemplazarlos automáticamente.  Despliegues: Se puede programar despliegues y monitorizar su salud, haciendo un rollback automático si algo ha ido mal.  Ahorro de recursos: Decide en qué nodo se ejecutará cada contenedor según sus características o restricciones.  Seguridad: Las contraseñas y otros datos sensibles son ocultados de forma segura.  Almacenamiento: Es capaz de montar automáticamente almacenamiento de red o local según necesidad
  • 18.
    OPENSHIFT • Interfaz webmucho más fácil de entender en Openshift para principiantes. Uno de los problemas de Kubernetes es que su interfaz web no aporta demasiado con respecto a la consola de comandos. Openshift es mucho más intuitivo y manejable. • OpenShift es un producto de computación en la nube de plataforma como servicio (PaaS) de RedHat. Se basa en Docker y Kubernetes, pero añade una nueva capa. • Aunque está basado en código abierto, y existen versiones gratuitas, no deja de ser un producto de RedHat. Lo que en su versión de pago te da acceso a uno de los mejores soportes del mercado. Si necesitas soporte en Kubernetes, Openshift sería la alternativa. • Añade capa de seguridad extra a Kubernetes. Facilita la integración Directorio Activo, por ejemplo. O no deja instalar ciertas imágenes o utilizar el usuario root. • Dispone de componentes de monitorización • Gestión más avanzada del Networking • Mejora las opciones en los despliegues con respecto a Kubernetes con DeploymentConfig • Gestión de imágenes de contenedores con ImageStreams • Jenkins integrado
  • 19.