Un artículo para entender el modelo de red de Docker

Tabla de contenido

1. Red acoplable

1.1 Descripción general del modelo de red de Docker

1.2 Controlador de red Docker

1.2.1 modo anfitrión

1.2.2 modo puente

1.2.3 modo contenedor

1.2.4 modo ninguno

1.3 Ejemplos de comandos de red Docker

1.3.1 Crear una red personalizada

1.3.2 Listar todas las redes

1.3.3 Conectar el contenedor a la red

1.3.4 Desconectar el contenedor de la red

1.3.5 Comprobar la información de red del contenedor


 

1. Red acoplable

1.1 Descripción general del modelo de red de Docker

Docker es una plataforma de contenedores que proporciona una solución de virtualización ligera que permite que las aplicaciones se ejecuten en forma de contenedores. En Docker, cada contenedor tiene su propia pila de red y puede comunicarse con otros contenedores o con el host. El modelo de red de Docker proporciona una configuración de red flexible y opciones de conectividad para contenedores.

El modelo de red Docker se basa en el espacio de nombres de red y la tecnología de puente Ethernet virtual del kernel de Linux. Cada contenedor Docker tiene su propio espacio de nombres de red, lo que significa que cada contenedor tiene su propia interfaz de red, dirección IP y tabla de enrutamiento. Docker también proporciona algunos controladores de red para la comunicación entre contenedores y conexiones a redes externas.

El modelo de red Docker es un modelo de red de tres capas que permite la comunicación entre contenedores y proporciona una variedad de controladores de red para que los usuarios elijan. Los componentes principales del modelo de red de Docker incluyen:

  1. Red Docker: Una red Docker es una red virtual para un conjunto de contenedores que permite la comunicación entre contenedores. Cada red Docker tiene su propio rango de direcciones IP y máscara de subred.

  2. Puente Docker: El puente Docker es un conmutador virtual que conecta la red Docker y la red física y se encarga de la comunicación entre contenedores.

  3. Interfaz de red de contenedores (CNI): CNI es una interfaz de complemento para configurar redes para contenedores. Define un conjunto de interfaces estándar y un conjunto de especificaciones de configuración, de modo que los diferentes controladores de red se puedan cambiar sin problemas.

1.2 Controlador de red Docker

Docker proporciona una variedad de controladores de red para diferentes métodos de conexión de red. Estos son algunos controladores de red de uso común:

1.2.1 modo anfitrión

El controlador del host comparte el contenedor con la red del host y el contenedor usará directamente la pila de red y la dirección IP del host. Esto significa que los contenedores pueden comunicarse con la red externa a través de la dirección IP del host, pero los contenedores no pueden comunicarse directamente entre sí. El contenedor que usa el modo host puede usar directamente la dirección IP del host para comunicarse con el mundo exterior, y el puerto de servicio dentro del contenedor también puede usar el puerto del host.La mayor ventaja del host es que el rendimiento de la red es mejor, pero los puertos ya utilizados en el docker host no pueden volver a usarlo, el aislamiento de la red no es bueno.

Para crear una red de contenedores utilizando el controlador de host, simplemente ejecute el siguiente comando:

$ docker run --name mycontainer --network host nginx

1.2.2 modo puente

El controlador de puente es el controlador de red predeterminado para Docker. Se basa en la tecnología de puente del kernel de Linux para crear un puente Ethernet virtual para conectar contenedores y redes de host. A cada contenedor se le asigna una dirección IP independiente y se comunica con otros contenedores a través de un puente. El modo puente es el modo de red predeterminado de docker, si el parámetro --net no está escrito, es el modo puente.

Cuando se inicie el proceso de Docker , se creará un puente virtual denominado docker0 en el host y todos los contenedores de Docker iniciados en este host se conectarán a este puente virtual. El modo de trabajo del puente virtual es similar al de un conmutador físico, de modo que todos los contenedores del host están conectados a una red de capa 2 a través del conmutador.

Asigne una IP al contenedor desde la subred docker0 y configure la dirección IP de docker0 como la puerta de enlace predeterminada del contenedor. Cree un par de dispositivos de par veth de tarjeta de red virtual en el host. Docker coloca un extremo del dispositivo de par veth en el contenedor recién creado y lo nombra eth0 (la tarjeta de red del contenedor), y coloca el otro extremo en el host con un nombre similar como vethxxx. Asígnele un nombre y agregue este dispositivo de red al puente docker0. Como se muestra abajo:

b8d5b52891df574403db18b1e03e1aec.jpeg

 En la figura anterior, podemos ver que tanto el contenedor como el host de Linux crearán una nueva tarjeta de red, y estas dos tarjetas de red están en pares. La técnica utilizada es evth-pair. evth-pair es un par de interfaces de dispositivos virtuales, aparecen en pares, uno está conectado al protocolo y el otro está conectado entre sí. evth-pair actúa como un puente que conecta varios dispositivos de red virtual.

El proceso para que el contenedor Docker complete la configuración de red puente es el siguiente:
 1. Cree un par de dispositivos de par de tarjetas de red virtual en el host. Los dispositivos Veth siempre aparecen en pares. Forman un canal de datos. Los datos que ingresan desde un dispositivo saldrán desde otro dispositivo. Por lo tanto, los dispositivos veth se utilizan a menudo para conectar dos dispositivos de red.
 2. Docker coloca un extremo del dispositivo de par veth en el contenedor recién creado y lo denomina eth0. El otro extremo se coloca en el host, con un nombre similar como veth, y este dispositivo de red se agrega al puente docker0.
 3. Asigne una IP al contenedor desde la subred docker0 y configure la dirección IP de docker0 como la puerta de enlace predeterminada del contenedor. Generalmente, la dirección IP de docker0 en docker es equivalente a localhost.

Crear una red de contenedores usando el controlador de puente es tan fácil como ejecutar el siguiente comando:

$ docker run --name mycontainer --network bridge nginx

1.2.3 modo contenedor

 Este modo especifica que un contenedor recién creado comparte un espacio de nombres de red (espacio de nombres de red) con un contenedor existente, en lugar de compartirlo con el host. El contenedor recién creado no creará su propia tarjeta de red, ni configurará su propia IP, sino que compartirá la IP, el rango de puertos, etc. con un contenedor específico. De manera similar, además de los aspectos de red de los dos contenedores, otras cosas, como los sistemas de archivos y las listas de procesos, aún están aisladas. Los procesos de los dos contenedores pueden comunicarse a través del dispositivo de la tarjeta de red.

1.2.4 modo ninguno

 Con el modo ninguno, el contenedor de Docker tiene su propio espacio de nombres de red; sin embargo, no se realiza ninguna configuración de red para el contenedor de Docker. Es decir, este contenedor Docker no tiene tarjeta de red, IP, enrutamiento y otra información. En este modo de red, el contenedor solo tiene la red loopback baja y ninguna otra tarjeta de red. Este tipo de red no se puede conectar a Internet, y una red cerrada bien puede garantizar la seguridad del contenedor.

1.3 Ejemplos de comandos de red Docker

1.3.1 Crear una red personalizada

$ docker network create mynetwork

1.3.2 Listar todas las redes

$ docker network ls

1.3.3 Conectar el contenedor a la red

$ docker network connect mynetwork mycontainer

1.3.4 Desconectar el contenedor de la red

$ docker network disconnect mynetwork mycontainer

1.3.5 Comprobar la información de red del contenedor

$ docker network inspect mynetwork

 Esto concluye este artículo.

ddbf3e9062e042239767e43a2a804b7f.gif

 

 

Supongo que te gusta

Origin blog.csdn.net/qq_43649937/article/details/131530980
Recomendado
Clasificación