Requisitos: Quiero asignar una dirección IP LAN independiente al contenedor Docker a través del servicio DHCP del router, para que la aplicación desarrollada ASP.NET Core pueda desplegarse en varios servidores (la aplicación debe desplegarse en varios servidores para lograr alta disponibilidad), y luego puedan transferirse entre sí. Algunas aplicaciones, especialmente las antiguas o aquellas que monitorizan el tráfico de red, esperan conectarse directamente a la red física. En este caso, puedes usar el controlador de red macvlan para asignar una dirección MAC a la interfaz virtual de red de cada contenedor, haciendo que parezca una interfaz de red física que se conecta directamente a la red física. En este caso, necesitas especificar una interfaz física en tu host Docker para macvlan. Y. subredes y puertas de Macvlan. Incluso puedes aislar tu red con una interfaz física diferente.
Primero, necesitas configurar la tarjeta de red física de la máquina anfitrionaPermite el modo "modo promiscuo"Por ejemplo, usando ESXI como ejemplo, configura un conmutador virtual de la siguiente manera:
El entorno del sistema es el siguiente:
CentOS Linux versión 7.9.2009 (Core) Docker versión 20.10.20, compilación 9fdeb9c
Instala el servicio Docker en el host CentOS 7. (omitido)
Construirnet.ipv4.ip_forward = 1, puedes ver la configuración actual a través de sysctl -a, si no es 1, por favor modifícala a 1, el tutorial está omitido. El propósito principal es determinar si la información recibida por una tarjeta de red puede ser transmitida a otras tarjetas de red cuando el host Linux tiene varias tarjetas de red, y si está configurada en 1, se puede realizar el reenvío de paquetes.
Cuando se instale el servicio Docker, crea una red macvlan con el siguiente comando:
--ip-range: Decidimos asignar el subconjunto a Docker 192.168.50.192/27, que es un rango de 32 direcciones que comienza en 192.168.50.192 y termina en 192.168.50.223. --gateway: Establece la dirección del gateway, normalmente la IP del router, por favor configúrala según tu situación real -o padre: La interfaz padre, que es el nombre de la tarjeta física de NIC del host, puede visualizarse a través de IP A según la situación real.
Una vez completada la creación, puedes verla con el siguiente comando:
Prueba a iniciar un contenedor busybox y configurar una red con la macvlan recién creada usando el siguiente comando:
Consejo: Si es necesario, da el recipientePara establecer la dirección IP, utiliza el parámetro --ip, por ejemplo: --ip=192.168.50.210
Puedes ver la dirección IP de un contenedor usando el siguiente comando:
Por supuesto, también puedes entrar dentro del contenedor para verlo, con el siguiente comando:
NosotrosUsando otras máquinas en la LAN, prueba a hacer ping a la dirección IP del contenedor, puedes ver que puedes hacer ping, como se muestra en la figura de abajo:
Al observar la tabla de mapeo IP y MAC del router, puedes ver que la dirección MAC/IP del contenedor docker es la misma que la del router, como se muestra en la figura de abajo:
Prueba a iniciar de nuevo un contenedor Redis y configurar la nueva red MacVLAN con el siguiente comando:
El propio host de CentOS también tiene una aplicación redis en funcionamiento y utiliza el puerto 6379, y creamos una aplicación contenedor redis que también usa el puerto 6379, es decir.El mismo puerto anfitrión, 6379, es escuchado por dos IPs diferentes, intenta ver si funciona.
Todos los resultados de las pruebas funcionan con normalidad, como se muestra en la figura siguiente:
Recursos
El inicio de sesión del hipervínculo es visible.
|