编程知识 cdmana.com

Docker Single Machine Bridge Network

Le plus simple Docker Un réseau est un réseau à pont unique.

Vous pouvez voir deux points dans le nom,Une seule machine signifie que le réseau ne peut fonctionner qu'en une seule Docker Fonctionnement sur l'hôte,Et seulement avec où Docker Conteneur sur l'hôte pour la connexion,Le pont signifie que c'est 802.1.d Une réalisation du pont(Commutateur de niveau 2).

Linux Docker Création d'un réseau de ponts autonomes utilisant un pilote de pont intégré.

Le diagramme ci - dessous montre les deux qui contiennent le même réseau de ponts locaux mynet De Docker Hôte.Bien que le réseau soit le même,Mais deux réseaux distincts.Cela signifie que le conteneur de l'image ne peut pas communiquer directement,Parce que ce n'est pas dans un réseau.

Chaque Docker Les hôtes ont tous un réseau de pont autonome par défaut.

In Linux Le nom du réseau supérieur est bridge,In Windows Ça s'appelle nat. Sauf si vous spécifiez un paramètre lors de la création d'un conteneur à partir de la ligne de commande --network,Sinon, par défaut, Les conteneurs nouvellement créés sont connectés au réseau .

Voici la Liste docker network ls La commande vient de terminer l'installation Docker Sortie sur l'hôte . La sortie a été tronquée , Seuls les réseaux par défaut sur chaque hôte sont affichés .Attention!, Le nom du réseau correspond au nom du pilote utilisé lors de la création —— C'est juste une coïncidence .

/Linux
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
333e184cd343 bridge bridge local

docker network inspect bridge

Vous pouvez voir le contenu du réseau de pont

In Linux Sur l'hôte,Docker Réseau par Bridge Création de pilotes ,Et Bridge Le niveau inférieur est basé sur Linux Du noyau Linux Bridge Technique.Bridge Est haute performance et très stable ! En même temps, il est possible de passer la norme Linux Outils pour voir ces réseaux ,Les codes sont les suivants:.

$ ip link show docker0

In Linux Docker Sur l'ordinateur central ,Par défaut“bridge” Le réseau est cartographié dans le noyau pour “docker0”De Linux Passerelle.Peut passer docker network inspect La commande observe la sortie ci - dessus .

docker network inspect bridge | grep bridge.name

Docker Par défaut“bridge”Réseau et Linux Dans le noyau“docker0” La relation entre les ponts est illustrée ci - dessous .

La figure ci - dessous élargit le contenu de la figure ci - dessus , L'accès a été complété en haut “bridge”Conteneur pour le réseau.

“bridge” Le réseau est mappé dans le noyau hôte avec le nom “docker0”De Linux Passerelle, Le pont peut être corrélé à l'envers par la cartographie des ports de l'interface Ethernet hôte .

Ensuite, utilisez docker network create Commande pour créer un nouveau réseau de pont autonome ,Il s'appelle“localnet”.

//Linux
$ docker network create -d bridge localnet

Nouveau réseau créé avec succès , Et apparaîtra dans docker network ls Parmi les sorties nommées .Si vous utilisez Linux, Ensuite, un nouveau Linux Passerelle.

Ensuite, en utilisant Linux brctl Outils pour voir dans le système Linux Passerelle. Vous devrez peut - être passer la commande apt-get install bridge-utils Pour installer brctl Paquet binaire.

Aucun des ponts n'est actuellement ouvert STP, Et aucun appareil n'est connecté (Correspondant interfaces Colonne vide).

Pour l'instant, La configuration du pont sur l'hôte est illustrée ci - dessous .

Ensuite, créez un nouveau conteneur , Et l'accès au nouveau réseau de ponts localnet Milieu.

 docker container run -d --name c1 \
--network localnet \
alpine sleep 1d

Le conteneur est maintenant connecté localnet En réseau.Peut passer docker network inspect Ordre de confirmer.

$ docker network inspect localnet --format

Après avoir ajouté les paramètres de formatage

La sortie indique “c1” Le conteneur est déjà à la passerelle (Bridge/NAT)Réseau localnet Au - dessus de.

Si vous recommencez brctl show Les ordres,Vous pouvez voir c1 L'interface réseau est connectée à br-3576dcb29082 Passerelle.

Si l'accès au nouveau conteneur se poursuit sur le même réseau , Dans le nouveau conteneur d'accès, vous pouvez passer par “c1” Nom du conteneur pour ping Ça marche.. Ceci est dû au fait que les nouveaux contenants sont tous enregistrés dans les Docker DNS Services, Ainsi, les conteneurs du même réseau peuvent résoudre les noms d'autres conteneurs .

    Conseils:Linux Par défaut Bridge Le réseau n'est pas pris en charge par Docker DNS Service de résolution de noms de domaine . Un réseau de ponts personnalisé peut !

Testez ça ensemble .
1) Créer un nom“c2”Conteneur pour,Et accès“c1”Où localnet Réseau.

$ docker container run -it --name c2 \
--network localnet \
alpine sh

Le terminal actuel passe à “c2”Dans le récipient.

2) In“c2”Dans le récipient,Adoption“c1” Nom du conteneur exécution ping Les ordres.

L'ordre est entré en vigueur !c2 Le conteneur fonctionne localement DNS Analyseur, L'analyseur transmet la demande à Docker Interne DNS Parmi les serveurs.DNS Le serveur a enregistré le démarrage du conteneur via --name Ou --net-alias Le paramètre spécifie la relation de cartographie entre le nom et le conteneur .

Si elle est toujours dans le contenant , Vous pouvez essayer d'exécuter des commandes liées au réseau . C'est une bonne idée Docker Comment fonctionne le réseau de conteneurs .

Jusqu'à présent, Les conteneurs d'un réseau de ponts mentionné précédemment ne peuvent communiquer qu'avec des conteneurs situés dans le même réseau . Vous pouvez utiliser la cartographie des ports (Port Mapping)Pour contourner cette limite. La cartographie des ports permet de cartographier un port conteneur à Docker Sur le port hôte . Pour les Docker Port hôte, Tout trafic envoyé à ce port , Sont transmis au conteneur . La figure ci - dessous montre les tendances spécifiques du débit .

Comme le montre la figure ci - dessus, Le port ouvert de l'application à l'intérieur du conteneur est 80. Le port est cartographié à Docker L'hôte 10.0.0.15 Interface 5000 Au - dessus du port . Le résultat final est l'accès 10.0.0.15:5000 Tout le trafic vers le conteneur 80 Port.

L'exemple suivant montre comment exécuter le conteneur Web Port du Service 80,Mapping to Docker Port hôte 5000 Processus.Exemple d'utilisation Linux De Nginx.

1) Lancer un nouveau Web Conteneur de service,Et mettre le récipient 80 Port Map to Docker L'hôte 5000 Port.

$ docker container run -d --name web \
--network localnet \
--publish 5000:80 \
nginx

2) Confirmer la cartographie du port .

$ docker port web

Cela signifie conteneur 80 Le port est déjà cartographié à Docker Sur toutes les interfaces de l'hôte 5000 Port.

3) Adoption Web Accès au navigateur Docker Hôte 5000 Port,Vérifier que la configuration est valide,Comme le montre la figure ci - dessous. Pour compléter le test ,J'ai besoin de savoir. Docker L'hôte IP Adresse ou DNS Nom.

Le Système externe est maintenant disponible via Docker L'hôte TCP Port 5000, Pour accéder aux Nginx Le conteneur est là..

La cartographie des ports fonctionne de cette façon , Cette approche est lourde et ne peut pas être étendue . Dans le cas d'un seul contenant , Il peut être lié à n'importe quel port de l'hôte . D'autres contenants ne peuvent plus être utilisés qui ont été Nginx Conteneur occupé 5000 Le port est là.. C'est la raison pour laquelle les réseaux de ponts autonomes ne s'appliquent qu'aux environnements de développement local et aux très petites applications .

版权声明
本文为[Petit, York?]所创,转载请带上原文链接,感谢
https://cdmana.com/2022/01/202201080556241061.html

Scroll to Top