Exigences : Je souhaite attribuer une adresse IP LAN indépendante au conteneur Docker via le service DHCP du routeur, afin que l’application développée ASP.NET Core puisse être déployée sur plusieurs serveurs (l’application doit être déployée sur plusieurs serveurs pour assurer une haute disponibilité), puis elles puissent être transférées entre elles. Certaines applications, en particulier celles qui surveillent le trafic réseau, s’attendent à se connecter directement au réseau physique. Dans ce cas, vous pouvez utiliser le pilote réseau macvlan pour attribuer une adresse MAC à l’interface réseau virtuelle de chaque conteneur, en la faisant ressembler à une interface réseau physique connectée directement au réseau physique. Dans ce cas, vous devez spécifier une interface physique sur votre hôte Docker pour macvlan. Et. sous-réseaux et portails de Macvlan. Vous pouvez même isoler votre réseau avec une interface réseau physique différente.
Tout d’abord, vous devez définir la carte réseau physique de la machine hôtePermet le mode « mode promiscuité »Par exemple, en prenant ESXI comme exemple, configurez un commutateur virtuel comme suit :
L’environnement système est le suivant :
CentOS Linux version 7.9.2009 (Core) Docker version 20.10.20, build 9fdeb9c
Installez le service Docker sur l’hôte CentOS 7. (omis)
Installernet.ipv4.ip_forward = 1, vous pouvez consulter la configuration actuelle via sysctl -a, si ce n’est pas 1, veuillez la modifier en 1, le tutoriel est omis. Le but principal est de déterminer si l’information reçue par une carte réseau peut être transmise à d’autres cartes réseau lorsque l’hôte Linux possède plusieurs cartes réseau, et si elle est réglée sur 1, le transfert de paquets peut être effectué.
Lorsque le service Docker est installé, créez un réseau macvlan avec la commande suivante :
--ip-range : Décision d’assigner le sous-ensemble à Docker 192.168.50.192/27, qui est une plage de 32 adresses commençant à 192.168.50.192 et se terminant à 192.168.50.223. --passerelle : Définissez l’adresse de la passerelle, généralement l’adresse IP du routeur, veuillez la définir selon votre situation réelle -o parent : L’interface parent, qui est le nom de la carte NIC physique de l’hôte, peut être consultée via IP A selon la situation réelle.
Une fois la création terminée, vous pouvez la consulter avec la commande suivante :
Essayez de lancer un conteneur busybox et de configurer un réseau avec le macvlan nouvellement créé avec la commande suivante :
Conseil : Si besoin, donnez le récipientPour définir l’adresse IP, utilisez le paramètre --ip, par exemple : --ip=192.168.50.210
Vous pouvez voir l’adresse IP d’un conteneur en utilisant la commande suivante :
Bien sûr, vous pouvez aussi entrer dans le conteneur pour le voir, avec la commande suivante :
NousEn utilisant d’autres machines sur le réseau local, essayez de pinger l’adresse IP du conteneur, vous pouvez constater que vous pouvez pinger, comme montré dans la figure ci-dessous :
En regardant la table de mappage IP et MAC du routeur, vous pouvez voir que l’adresse MAC/IP du conteneur docker est la même que celle du routeur, comme montré dans la figure ci-dessous :
Essayez de relancer un conteneur Redis et de configurer le nouveau réseau MacVLAN avec la commande suivante :
L’hôte CentOS lui-même dispose également d’une application Redis qui tourne et utilise également le port 6379, et nous créons une application conteneur Redis qui utilise aussi le port 6379, c’est-à-direLe même port hôte, 6379, est écouté par deux IP différentes, essaie de voir si ça marche.
Les résultats des tests fonctionnent tous normalement, comme le montre la figure ci-dessous :
Ressources
La connexion hyperlientérée est visible.
|