Contenedores

¿Qué son contenedores?

Los contenedores hacen posible que una aplicación se ejecute de forma coherente y fiable, independientemente del sistema operativo o de la entorno de la infraestructura. Los contenedores hacen esto agrupando todo lo que un servicio necesita para ejecutarse (código, tiempo de ejecución, herramientas del sistema, bibliotecas del sistema y configuraciones) creando un paquete ejecutable, independiente y portátil.

¿Para que se necesitan los contenedores?

Los contenedores representan el futuro de la computación, junto con tecnologías como DevOps, Cloud Native , inteligencia artificial y aprendizaje automático. Los casos de uso comunes incluyen:

  • Modernizar las aplicaciones existentes en la nube
  • Crear nuevas aplicaciones que maximizan los beneficios de los contenedores
  • Aislar, implementar, escalar y dar soporte a microservicios y aplicaciones distribuidas
  • Impulsar la eficiencia / efectividad de DevOps a través de una construcción / prueba / implementación optimizadas
  • Proporcionar a los desarrolladores entornos de producción consistentes, aislados de otras aplicaciones y procesos.
  • Simplificar y acelerar funciones repetitivas.
  • Facilitar entornos informáticos híbridos y multinube, ya que los contenedores pueden ejecutarse de forma coherente en cualquier lugar

Pero entonces, ¿qué es la contenerización?

La contenedorización, el acto de crear un contenedor, implica extraer solo la aplicación / servicio que necesita ejecutar, junto con sus dependencias y configuración, y abstraerlo del sistema operativo y la infraestructura subyacente. La imagen de contenedor resultante se puede ejecutar en cualquier plataforma de contenedor. Se pueden ejecutar varios contenedores en el mismo host y compartir el mismo sistema operativo con otros contenedores, cada uno de los cuales ejecuta procesos aislados dentro de su propio espacio seguro. Debido a que los contenedores comparten el sistema operativo base, el resultado es poder ejecutar cada contenedor usando significativamente menos recursos que si cada uno fuera una máquina virtual (VM) separada.

En la imagen anterior, a la derecha podemos observar una máquina virtual, cualquier aplicación instalada en esa máquina virtual debe de ser migrada con la máquina.

A la derecha, tenemos contenedores, en este escenario podemos migrar nuestra aplicaciones tiene tener dependencia de la máquina donde están siendo ejecutadas, esto es justamente el significado de que ser “portables”.

¿Cuáles son los beneficios de los contenedores?

  • Los contenedores son livianos: debido a que están aislados de la capa del sistema operativo, los contenedores son eficientes y livianos en recursos en comparación con las máquinas virtuales. 
  • Los contenedores son portátiles: dado que el contenedor incluye todas las dependencias y configuraciones, puede escribir una vez y moverse entre entornos. 
  • Los contenedores son escalables: debido a su pequeño tamaño, los contenedores escalan rápidamente, escalan sobre la marcha, pueden escalar hacia abajo cuando no están en uso y se reinician rápidamente cuando es necesario. 
  • Los contenedores pueden ser rentables: a través de la reducción de la demanda de recursos y el escalado inteligente, los contenedores ofrecen una solución que es resistente, rápida y rentable. 
  • Los contenedores requieren que administre menos infraestructura: los contenedores lo obligan a llegar a los detalles prácticos de lo que realmente necesita, para brindar una experiencia que sirva mejor a sus clientes. Esto facilita la administración de la infraestructura, porque hay menos infraestructura que administrar.
  • Los contenedores permiten el enfoque: los equipos de TI dedicarán menos tiempo a los sistemas operativos invitados y al hardware físico, lo que les permitirá participar en proyectos críticos para el negocio. 
  • Los contenedores aceleran el desarrollo: los contenedores proporcionan un entorno estable y predecible, donde la CPU / memoria se optimiza y el código se extrae de la infraestructura para la portabilidad. 
  • Los contenedores acelaran la arquitectura moderna: al usar contenedores, los desarrolladores pueden dividir las aplicaciones en microservicios, lo que puede acelerar el desarrollo y, cuando se implementan, se pueden escalar individualmente.

Contenedores versus máquinas virtuales

Los contenedores y las máquinas virtuales son “paquetes”. Un contenedor es un paquete que incluye su aplicación y todo lo que necesita para ejecutarse, excepto un sistema operativo. Una máquina virtual es un paquete que incluye su aplicación y todo lo que necesita para ejecutarse, incluido el propio sistema operativo.

Puede ejecutar varios contenedores en un solo sistema operativo. Y puede ejecutar varias máquinas virtuales en una sola pieza de hardware. Incluso puede ejecutar contenedores en máquinas virtuales.

Una ventaja clave que tienen los contenedores sobre las máquinas virtuales es que, debido a que no incluyen el sistema operativo, los contenedores requieren menos recursos del sistema y menos gastos generales . También tienden a ser más rápidos para iniciar / detener y son ultraportátiles en todos los entornos. 

Docker versus Kubernetes

La tecnología Docker permite crear y ejecutar contenedores, y es el estándar de la industria para lo que define un “contenedor”. Kubernetes (abreviado como k8s) hace posible administrar (“orquestar”) todas sus cargas de trabajo en contenedores, incluido el aprovisionamiento, las redes, el equilibrio de carga, la protección y el escalado. Docker se puede ejecutar de forma independiente sin Kubernetes, pero Kubernetes no puede funcionar sin un servicio de contenedor como Docker.

A partir de 2021, Docker tiene prácticamente toda la cuota de mercado del espacio de contenedorización. Hay muchos productos Kubernetes de la competencia en el mercado, con Kubernetes autogestionado instalado en el 50% de las empresas encuestadas por StackRox . Los cinco primeros son: self-managed Kubernetes (50%), Amazon EKS (44%), Azure AKS (31%), RedHat OpenShift (22%) and Amazon ECS (20%).

En el blog, tendremos dos secciones, una para Docker y otra Kubernetes, donde se explicará como realizar laboratorios en casa para poder probar estás tecnologías Open Source.

Translate »