Docker para Dummies. Presentación sobre virtualización en Cloud Computing. Definición de Docker y otros componentes o proyectos relacionados (Kubernetes y Openshift).
3. 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.
4. 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
5.
6. 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.
7. 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.
8. 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.
9. 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.
11. 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.
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 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.
14. 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
15. 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
16. 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.
17. 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
18. 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