DevOps Series 101 - Herramientas - Docker -Parte 1

6 minutos de lectura

¿A qué nos referimos cuando hablamos de un Contenedor? ¿Por qué tanta popularidad? ¡Lee esta nota para enterarte!


Por Gino Luciano Rojo para EducaciónIT.


Docker y los contenedores: ¿De qué se trata?


¡Hola! Espero que a estas alturas esta entrada los encuentre con mucha avidez de respuestas, y sobre todo, de más consultas. Nuestra propuesta es: ¿A que nos referimos cuando hablamos de un Contenedor? ¿Por qué tanta popularidad?


¿Qué tiene que ver Docker con toda esta popularidad de los contenedores?


Comencemos por el principio. ¿Qué es y para que sirve un contenedor?


¿Qué son los contenedores?



El estándar de la industria actual es utilizar máquinas virtuales (VM) para ejecutar aplicaciones de software. Las máquinas virtuales ejecutan aplicaciones dentro de un sistema operativo invitado, que se ejecuta en hardware virtual impulsado por el sistema operativo host del servidor.

Gino Luciano Rojo


Las máquinas virtuales son excelentes para proporcionar un aislamiento completo del proceso para las aplicaciones: hay muy pocas formas en que un problema en el sistema operativo host pueda afectar el software que se ejecuta en el sistema operativo invitado, y viceversa.


Pero este aislamiento tiene un gran costo: la sobrecarga computacional que se gasta en virtualizar el hardware para que lo use un sistema operativo invitado es sustancial.


Los contenedores adoptan un enfoque diferente: al aprovechar la mecánica de bajo nivel del sistema operativo host, los contenedores proporcionan la mayor parte del aislamiento de las máquinas virtuales a una fracción de la potencia informática.


¿Por qué utilizar contenedores?


Los contenedores ofrecen un mecanismo de empaquetado lógico en el que las aplicaciones se pueden abstraer del entorno en el que realmente se ejecutan.


Como podemos ver, la virtualizacion basada en Contenedores, utiliza el motor del software de Contenedores, en nuestro caso, el motor de Docker, el Docker Engine, reemplazando la funcion que solia cumplir Hypervisor

Este desacoplamiento permite que las aplicaciones basadas en contenedores se implementen de manera fácil y coherente, independientemente de si el entorno de destino es un centro de datos privado, la nube pública o incluso la computadora portátil personal de un desarrollador.


Esto brinda a los desarrolladores la capacidad de crear entornos predecibles que están aislados del resto de las aplicaciones y se pueden ejecutar en cualquier lugar.


Desde el punto de vista de las operaciones, además de la portabilidad, los contenedores también brindan un control más granular sobre los recursos, lo que brinda a su infraestructura una eficiencia mejorada que puede resultar en una mejor utilización de sus recursos informáticos.


Ventajas de la tecnología de contenedores


Los contenedores de aplicaciones “empaquetan” los recursos necesarios para el funcionamiento de una aplicación para facilitar su uso a administradores y desarrolladores, simplificando tanto la instalación como la puesta en marcha de programas muy complejos.



Sin embargo, las mayores ventajas radican, sobre todo, en la gestión y en la automatización de software basado en contenedores.


  • Instalación más sencilla: Los contenedores de software se inician a partir de imágenes o representaciones portables de un contenedor, incluyendo un programa y todos los componentes requeridos (como librerías, soporte o archivos de configuración). De esta forma, se compensan las diferencias entre sistemas operativos. Su instalación se reduce a la introducción de una línea de comando.

  • Independiente de la plataforma: Las imágenes se pueden transportar cómodamente de un sistema a otro y se caracterizan por una considerable independencia de la plataforma. Lo único que se necesita para iniciar un contenedor desde una imagen es un sistema operativo que soporte contenedores.

  • Pérdidas por virtualización mínimas: Con un Linux y Docker container, la instalación de contenedores requiere alrededor de 100 MB y unos pocos minutos, aunque no es solo esto a lo que se oponen los administradores de sistemas. Mientras que, la virtualización de hardware trae consigo una pérdida de rendimiento para el hipervisor y otros sistemas operativos. Los contenedores, al prescindir de todo esto, reducen esta pérdida al mínimo. Aún más, si el arranque (booting) de una máquina virtual puede durar varios minutos, las aplicaciones están disponibles enseguida.

  • Aplicaciones aisladas: Cada programa funciona independientemente de otros contenedores, de forma que aplicaciones con requerimientos opuestos pueden funcionar en paralelo en el mismo sistema.

  • Administración y automatización unitarias: Debido a que en una plataforma como Docker todos los contenedores son gestionados con las mismas herramientas, es posible automatizar todas las aplicaciones de manera centralizada. Por esto, estas soluciones están indicadas sobre todo para arquitecturas de servidor en las cuales los componentes están distribuidos en varios servidores, de forma que se carga con los pesos de instancias diferentes. En estos ámbitos de aplicación, el Docker container dispone de herramientas con las cuales configurar automatismos.

Esto posibilita, por ejemplo, iniciar instancias nuevas de forma automática en momentos puntuales de sobrecarga. Google ofrece Kubernetes, un software a la imagen de Docker para la orquestación de grandes clústers de contenedores.


Y entonces...Docker, ¿qué es ?


¿Qué es Docker?



Un proyecto de código abierto que automatiza la implementación de aplicaciones de software dentro de contenedores al proporcionar una capa adicional de abstracción y automatización de la virtualización a nivel de sistema operativo en Linux.


¡Bang! Este concepto no nos ayuda mucho. En palabras más simples, Docker es una herramienta que permite a los desarrolladores, administradores de sistemas, etc., implementar fácilmente sus aplicaciones en una caja de arena, sandbox, (lo que llamamos contenedores) para que se ejecuten en el sistema operativo host, es decir, Linux.


El beneficio clave de Docker es que permite a los usuarios empaquetar una aplicación con todas sus dependencias en una unidad estandarizada para el desarrollo de software.


A diferencia de las máquinas virtuales, los contenedores no tienen una gran sobrecarga y, por lo tanto, permiten un uso más eficiente del sistema y los recursos subyacentes.


Por lo tanto, los contenedores son una forma de empaquetado, de virtualización, pero no la tradicional, sino una que consume.


  • Menos recursos, por lo tanto, mayores ganancias.
  • mejora la performance, por lo tanto, ganamos.
  • Es mucho mas rápida la ejecución y destrucción del proceso del software.
  • Es open source.
  • No necesita hyperv.
  • Es multiplataforma.


Sin embargo, la única forma de aprender contenedores, es aplicándose a ellos de manera practica, por lo tanto, los espero en otra serie de entradas sobre contenedores y Docker, ¡y en nuestros cursos sobre Docker, DevOps y Cloud!


¡Hasta la próxima entrega!

Sinceramente,

Gino

Categoría
Artículo escrito por: Gino Luciano Rojo

Deja un comentario