La red de contenedores es un mecanismo emergente de entorno de pruebas de aplicaciones que se utiliza en ordenadores domésticos y en soluciones de red empresarial a escala web. El concepto es similar al de una máquina virtual. Dentro del contenedor y aislado del host y del resto de contenedores, se encuentra un entorno Linux con todas las funciones y sus propios usuarios, sistema de archivos, procesos y pila de red. Todas las aplicaciones incluidas en el contenedor pueden acceder solamente a los archivos o recursos disponibles dentro del propio contenedor, y también pueden modificarlos.
Es posible ejecutar varios contenedores al mismo tiempo, cada uno con sus propias instalaciones y dependencias. Esto es especialmente útil en casos en los que las versiones más recientes de una aplicación pueden requerir la actualización de una dependencia que puede causar conflictos con otras dependencias de la aplicación que se ejecutan en el servidor. A diferencia de las máquinas virtuales, los contenedores comparten recursos de host en lugar de simular por completo todo el hardware del ordenador, lo que hace que los contenedores sean más pequeños y más rápidos que las máquinas virtuales, y que los costes generales sean inferiores. En particular, en el contexto de las aplicaciones a escala web, los contenedores se diseñaron como sustitutos de las máquinas virtuales como plataforma de implementación para arquitecturas de microservicios.
Otra característica de los contenedores es su portabilidad. Por ejemplo, Docker, un motor de contenedores, permite a los desarrolladores empaquetar un contenedor y todas sus dependencias. Ese paquete de contenedor puede estar disponible para su descarga. Una vez descargado, el contenedor se puede ejecutar inmediatamente en un host.
Una red de contenedores es una forma de virtualización similar a las máquinas virtuales en el concepto, pero con varias diferencias. Principalmente, los contenedores son un método de virtualización de sistemas operativos; en cambio, las máquinas virtuales son un método de virtualización de hardware.
Cada máquina virtual que se ejecuta en un hipervisor tiene su propio sistema operativo, aplicaciones y bibliotecas, y puede encapsular datos persistentes, instalar un nuevo sistema operativo, utilizar un sistema de archivos diferente al del host o usar una versión del núcleo distinta.
Por el contrario, los contenedores son una «instancia en ejecución» de una imagen, es decir, una virtualización efímera del sistema operativo que se pone en marcha para realizar algunas tareas y, después, se elimina y se olvida. Debido a la naturaleza efímera de los contenedores, los usuarios del sistema ejecutan muchas más instancias de contenedores que de máquinas virtuales, lo que requiere un mayor espacio de direcciones.
En lo referente al aislamiento, un contenedor se basa en dos características del núcleo de Linux: el espacio de nombres y los grupos de control «cgroups». Para que el contenedor tenga su propia vista del sistema que lo aísla de otros recursos, se crea un espacio de nombres para cada uno de los recursos y se deja de compartir con el resto del sistema. Los cgroups se utilizan después para supervisar y limitar los recursos del sistema, como la CPU, la memoria, las operaciones de E/S del disco, la red, etc.
Los contenedores se están adoptando rápidamente y están sustituyendo a las máquinas virtuales como plataforma para microservicios.
Los contenedores tienen las siguientes ventajas clave:
Los contenedores se implementan como parte de la arquitectura de microservicios en entornos empresariales para ayudar a encapsular tareas individuales comunes para aplicaciones web de gran tamaño. Cada tarea puede tener su propio contenedor. Los contenedores orientados a recursos externos, como las API y las interfaces gráficas de usuario, se abren a la red pública de Internet, y los demás residen en la red privada.
El modelo de microservicios aporta ventajas como las siguientes:
Actualmente, se utilizan cinco tipos de red de contenedores. Sus características giran en torno a los modelos de IP por contenedor frente a los de IP por módulo, y en el requisito de traducción de direcciones de red (NAT) frente a la falta de necesidad de esta traducción.
Utilice imágenes y archivos binarios firmados con compatibilidad empresarial total para Project Antrea.
Conecte y proteja sus aplicaciones y microservicios contenedorizados.
Obtenga la experiencia de nube pública en su centro de datos mediante la red de nube virtual.