En un mundo impulsado por el software donde la omnipresencia y la facilidad de implementación con gastos generales mínimos son los principales requisitos, la nube ocupa rápidamente su lugar en cada imagen. Los contenedores están dejando su huella en esta vasta extensión de espacio en la nube con los mejores establecimientos de TI y tecnología del mundo que confían en el concepto para sus necesidades de infraestructura. Los gigantes tecnológicos como Facebook, Google y Microsoft utilizan contenedores en sus procesos optimizados para facilitar una implementación segura y fácil en los entornos de producción en la nube. Esta implementación con contenedores ofrece una técnica que abstrae la aplicación del entorno de tiempo de ejecución; al igual que las máquinas virtuales y esto se hace, por supuesto, mediante la virtualización.
Los dos conceptos básicos que se explorarán aquí son:
- Cómo se construyen los contenedores en la técnica de virtualización
- Cómo ofrecen una alternativa a las máquinas virtuales
1. Para responder cómo los contenedores permiten la virtualización, analicemos en detalle qué es la virtualización y cómo los contenedores entran en juego con este concepto.
La virtualización es una técnica que esencialmente crea una ilusión de un recurso como un escritorio, almacenamiento, red o un sistema operativo. Los dispositivos, las aplicaciones y los usuarios humanos poseen la capacidad de interactuar con estos recursos. Esta ilusión también llamada virtualización amplía las capacidades de los sistemas tradicionales, que están limitados por sus propios recursos físicos.
Ahora, los contenedores permiten esta virtualización para las aplicaciones que se implementan en ellos. Las aplicaciones en contenedores se ejecutan de forma independiente, aisladas de cualquier recurso físico. Los contenedores virtualizan el sistema operativo, la CPU, la memoria, el almacenamiento y los recursos de red al proporcionar un entorno controlado que se puede ampliar o reducir según sea necesario. Un contenedor también empaqueta la aplicación junto con sus dependencias y archivos necesarios, lo que permite implementar la aplicación en cualquier entorno sin tener que configurar el servidor, el hardware o el software.
Esto todavía suena similar a la virtualización implementada a través de máquinas virtuales, ¿verdad?
Entonces, antes de entrar en lo que pueden hacer más contenedores, aclaremos en qué se diferencian los contenedores de las máquinas virtuales.
2. Una máquina virtual es una forma de virtualización de hardware. El hardware está lógicamente separado de los otros recursos. El hardware puede ser cualquier sistema, como un escritorio (con hardware y su propio sistema operativo) llamado máquina host, en el que se pueden ejecutar varias máquinas virtuales o máquinas invitadas, cada una con sus propios sistemas operativos independientes. Esto es posible gracias a un firmware llamado hipervisor.
Los contenedores, como las máquinas virtuales, se ejecutan en máquinas host. También se pueden controlar según sea necesario y proporcionan aislamiento de la aplicación del entorno de tiempo de ejecución. Sin embargo, los contenedores apuntan a la virtualización del sistema operativo. A diferencia de las máquinas virtuales, en un sistema en contenedores no es necesario instalar sistemas operativos invitados en el sistema host. En su lugar, todas las instancias de contenedores que contienen el código de la aplicación comparten el sistema operativo host subyacente. Esto hace que los contenedores sean livianos y reduce los gastos generales del sistema operativo asociados con las máquinas virtuales, como parches, actualizaciones, soporte de controladores, etc. Además, reduce la cantidad de recursos de la máquina host consumidos por la presencia de sistemas operativos individuales.
Beneficios de los contenedores:
- Las aplicaciones se pueden implementar sin preocuparse por el entorno de tiempo de ejecución. Como resultado, una aplicación puede moverse fácilmente a través del ciclo de desarrollo de software y puede ejecutarse en cualquier lugar, por ejemplo, en Mac OS, Linux, Windows e incluso en centros de datos. Esto da como resultado un menor gasto de tiempo en examinar el entorno y más tiempo puede ser tiempo para desarrollar nuevas funciones.
- Se pueden ejecutar varios contenedores con aplicaciones en la misma instancia de recursos físicos que comparten un sistema operativo. Estos contenedores, al ser livianos, son rápidos y utilizan eficientemente los recursos informáticos disponibles.
- Los contenedores están aislados unos de otros, lo que le da al desarrollador el margen de maniobra para dividir los servicios de la aplicación en diferentes contenedores. Estos contenedores no comparten ninguna dependencia y cada uno puede ser manipulado y actualizado por el desarrollador a voluntad.
- Los contenedores vienen con la capacidad incorporada de control de versiones.
Existen varias plataformas para el despliegue de contenedores como Docker, Google Kubernetes, Core OS, Red Hat y AWS. Sin embargo, debido a la extrema popularidad de Docker Inc. en este dominio, los contenedores son sinónimos del término ‘Contenedores Docker’.
Artículo relacionado
Virtualización de Linux: Contenedores de Linux (lxc)
Publicación traducida automáticamente
Artículo escrito por Avantika Bhatia 1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA