¿Qué es la red de contenedores?
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.

VMware Container Networking with Antrea (ficha)

Presentación de VMware Container Networking with Antrea para Kubernetes
¿Cómo funciona una red de contenedores?
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.
Ventajas de la red de contenedores
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:
- Ejecución de aplicaciones contenedorizadas, junto con las cargas de trabajo existentes: las máquinas pueden ejecutar aplicaciones contenedorizadas junto con máquinas virtuales tradicionales en la misma infraestructura, lo que proporciona flexibilidad y velocidad.
- Combinación de portabilidad con seguridad, visibilidad y gestión: el diseño inherente de los contenedores permite una mayor seguridad gracias al entorno de pruebas, la transparencia de los recursos con el host, la gestión de tareas y la portabilidad del entorno de ejecución.
- Uso y adaptación de la infraestructura existente con facilidad: utilice su centro de datos definido por software (SDDC) existente para evitar el rediseño de infraestructura, que consume tiempo y dinero y provoca la creación de silos. Los silos se producen cuando distintos departamentos mantienen su propia infraestructura de TI dentro de la misma organización. Este «efecto silo» genera problemas a la hora de implementar políticas y actualizaciones de TI en toda la organización debido a las diferencias en las configuraciones técnicas de cada departamento. La reintegración de los silos es un proceso costoso y lento que se puede evitar con una red de contenedores.
- Interfaz compatible con Docker para los desarrolladores: los desarrolladores que ya conocen Docker pueden crear aplicaciones contenedorizadas mediante una interfaz compatible con Docker y distribuirlas a través del portal de gestión de autoservicio o la interfaz de usuario.
Uso de una red de contenedores en implementaciones de aplicaciones a escala web
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:
- Facilidad de implementación: las configuraciones de host se pueden integrar en los contenedores y estar listas para funcionar una vez implementadas.
- Posibilidad de «usar y tirar»: los contenedores se han diseñado para ponerse en marcha y eliminarse con rapidez. Si se produce un error en el host, volver a poner las aplicaciones en línea es tan sencillo como utilizar un servidor de repuesto.
- Tolerancia a fallos: los contenedores crean una redundancia sencilla para las bases de datos y los servidores web. Copiar el mismo contenedor en varios nodos brinda una alta disponibilidad y tolerancia a fallos.
Tipos de red de contenedores
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.
- Red nula: el contenedor recibe una pila de red, pero carece de conexión externa. Este modo es útil para probar contenedores, preparar un contenedor para una conexión de red posterior y asignarlo a contenedores que no requieren comunicaciones externas.
- Red puente: los contenedores se conectan mediante una red de hosts interna y se pueden comunicar con otros contenedores en el mismo host. No se puede acceder a los contenedores desde fuera del host. La red puente es la opción predeterminada para los contenedores de Docker.
- Red host: esta configuración permite que un contenedor creado comparta el espacio de nombres de red del host, lo que otorga al contenedor acceso a todas las interfaces de red del host. Este tipo de configuración de red externa es la menos compleja y es propensa a conflictos de puertos debido al uso compartido de las interfaces de red.
- Red subyacente: abre las interfaces del host directamente a los contenedores que se ejecutan en el host y elimina toda necesidad de asignar puertos, lo que la hace más eficiente que la red puente.
- Red superpuesta: usa túneles de red para permitir la comunicación en varios hosts, lo que permite que los contenedores actúen como si estuvieran en la misma máquina a pesar de estar alojados en hosts diferentes.
Productos y soluciones relacionados
Antrea
Utilice imágenes y archivos binarios firmados con compatibilidad empresarial total para Project Antrea.
Conexión de contenedores y Kubernetes
Conecte y proteja sus aplicaciones y microservicios contenedorizados.
Red de nube virtual
Obtenga la experiencia de nube pública en su centro de datos mediante la red de nube virtual.