¿Qué es la tecnología de contenedores?
NoticiasLa tecnología de contenedores, también conocida como solo un contenedor, es un método para empaquetar una aplicación para que pueda ejecutarse, con sus dependencias, aislada de otros procesos. Los principales proveedores de computación en la nube pública, incluidos los servicios web de Amazon, Microsoft Azure y Google Cloud Platform, han adoptado la tecnología de contenedor, con software de contenedor que tiene nombres que incluyen las opciones populares de Docker, Apache Mesos, rkt (pronunciado “cohete”), y Kubernetes.
La tecnología de contenedores recibe su nombre de la industria naviera. En lugar de encontrar una manera única de enviar cada producto, los productos se colocan en contenedores de acero para envíos, que ya están diseñados para ser recogidos por la grúa en el muelle, y se ajustan en el barco diseñado para adaptarse al tamaño estándar del contenedor. En resumen, al estandarizar el proceso y mantener los elementos juntos, el contenedor se puede mover como una unidad, y cuesta menos hacerlo de esta manera.
Con la tecnología de contenedores informáticos, es una situación análoga. ¿Alguna vez se ha producido una situación en la que un programa se ejecuta perfectamente en una máquina, pero luego se convierte en un desorden cuando se mueve a la siguiente? Esto puede ocurrir cuando se migra el software de la PC de un desarrollador a un servidor de prueba, o un servidor físico en un centro de datos de la empresa, a un servidor de nube. Los problemas surgen cuando se mueve software debido a las diferencias entre los entornos de las máquinas, como el sistema operativo instalado, las bibliotecas SSL, el almacenamiento, la seguridad y la topología de la red..
Al igual que la grúa recoge todo el contenedor como una unidad para ponerlo en el barco o camión para el transporte, lo que facilita el movimiento, la tecnología de contenedor de computadora logra lo mismo. La tecnología del contenedor no solo contiene el software, sino también las dependencias, incluidas bibliotecas, archivos binarios y archivos de configuración, y se migran como una unidad, evitando las diferencias entre las máquinas, incluidas las diferencias de SO y el hardware subyacente que conduce a incompatibilidades y bloqueos. Los contenedores también facilitan el despliegue de software en un servidor.
Maquinas virtuales
Antes de que los contenedores ganaran popularidad, un enfoque previo eran las máquinas virtuales. Aquí, un servidor físico se podía usar para múltiples aplicaciones a través de la tecnología de virtualización, también conocida como máquina virtual, donde cada máquina virtual contiene el sistema operativo completo, así como la aplicación para ejecutar..
El servidor físico que ejecuta varias máquinas virtuales, cada una con su propio sistema operativo, con una única capa de emulación de hipervisor en la parte superior. Al ejecutar varios sistemas operativos simultáneamente, hay una gran cantidad de gastos generales en el servidor a medida que los recursos se utilizan, y el número de máquinas virtuales se limita a unos pocos.
En contraste, con la tecnología de contenedores, el servidor ejecuta un solo sistema operativo, ya que cada contenedor puede compartir este sistema operativo único con los otros contenedores en el servidor. Las partes del sistema operativo que se comparten se leen solo para no interferir con los otros contenedores. Esto significa que, en comparación con las máquinas virtuales, los contenedores requieren menos recursos del servidor con una sobrecarga menor, y son significativamente más eficientes, por lo que se pueden empaquetar muchos más contenedores en un solo servidor. Por ejemplo, si bien cada máquina virtual puede requerir gigabytes de almacenamiento, cada contenedor que ejecuta un programa similar solo necesita megabytes.
¿Cómo funcionan los contenedores??
Los contenedores están configurados para realizar el trabajo en una arquitectura de múltiples contenedores, lo que se denomina un cluster de contenedores. En un clúster de contenedores Kubernetes, hay un único maestro de clúster, con los otros contenedores relacionados designados como nodos, que son las máquinas de varios trabajadores. Las funciones del maestro de clústeres son programar las cargas de trabajo para los nodos y también administrar su ciclo de vida y sus actualizaciones..
La tecnología de contenedores no es un fenómeno nuevo, y ha sido durante mucho tiempo una característica central para Linux. El avance en los últimos años de la tecnología de contenedores se ha vuelto más fácil de usar, y los desarrolladores de software los han aceptado por su simplicidad y por evitar problemas de compatibilidad. También permiten que un programa se descomponga en partes más pequeñas, que se conocen como microservicios.
La ventaja de tener el programa como microservicios de componentes es que diferentes equipos pueden trabajar en cada uno de los contenedores por separado siempre y cuando se mantengan las interacciones entre los diferentes contenedores, lo que facilita el desarrollo del software más rápido. Finalmente, la tecnología de contenedores permite un control granular completo sobre los contenedores..
Si bien los contenedores pueden ejecutar todo tipo de software, los programas más antiguos que fueron diseñados para ejecutarse en una máquina virtual no migran bien a la tecnología de contenedores. Este software anterior que se ejecuta en una máquina virtual se puede colocar en una plataforma en la nube como Microsoft Azure, por lo que es probable que los contenedores no reemplacen por completo las máquinas virtuales en el futuro inmediato..
¿Cómo gestionan las empresas los contenedores??
Con tanto software que se ejecuta como contenedores, la gestión de los contenedores ahora se ha convertido en un requisito, y es imposible realizar esta tarea de forma manual. Se requiere software especializado para la gestión de contenedores, y una solución popular de código abierto es Kubernetes, que tiene varias distribuciones, incluida Red Hat OpenShift. El software de administración de contenedores facilita la implementación de contenedores y funciona bien con las estrategias de implementación rápida de la filosofía de DevOps.
Otra gran característica de la tecnología de contenedores es su flexibilidad. Con una máquina virtual, se requieren varios minutos para iniciarse, al igual que la PC de su escritorio se inicia al comienzo del día. Más bien, con la tecnología de contenedor, como el sistema operativo ya se está ejecutando en el servidor, un contenedor puede iniciarse en unos pocos segundos. Esto permite que los contenedores se inicien y detengan según sea necesario, que se flexionen hacia arriba en un momento de máxima demanda y que se flexionen hacia abajo cuando no se necesitan..
Además, si un contenedor se bloquea, puede reiniciarse rápidamente para que pueda volver a la tarea. Este tipo de administración se conoce como orquestación de contenedores, y un software como Docker Swarm puede controlar este tipo de orquestación y distribuir las tareas entre el clúster de contenedores..
Dado que varios contenedores comparten el mismo sistema operativo, existe la preocupación de que la tecnología de contenedores es menos segura que una máquina virtual. Esto se debe a que si hay una falla de seguridad en el núcleo del host, esto afectará a múltiples contenedores. Se han hecho esfuerzos para hacer los contenedores más seguros. Un enfoque incluye a Docker que requiere una infraestructura de firma para evitar que se inicien los contenedores no autorizados. También hay un software de seguridad de contenedor, como Twistlock que perfila el comportamiento de un contenedor y luego cierra un contenedor que cae fuera del perfil esperado.
- También discutimos la nube híbrida aquí