Différences : 1. Le conteneur en mode hôte et l'hôte partagent un "Espace de noms réseau" ; 2. Le conteneur créé en mode Conteneur partagera l'adresse IP et la plage de ports avec le conteneur spécifié. 3. Le mode Aucun désactive la fonction réseau ; du conteneur ; 4 , le mode par défaut de Bridge attribue une adresse IP définie à chaque conteneur.
L'environnement d'exploitation de ce tutoriel : système linux7.3, version docker-1.13.1, ordinateur Dell G3.
1. Quatre modes réseau
2. Principe de mise en œuvre
Docker utilise le pontage Linux pour virtualiser un réseau de conteneurs Docker sur le pont de la machine hôte (docker0), lorsque Docker démarre un conteneur, il attribuera une adresse IP au conteneur en fonction du segment réseau du pont Docker, appelé Container-IP. En même temps, le pont Docker est la passerelle par défaut. de chaque conteneur. Étant donné que les conteneurs du même hôte sont tous connectés au même pont réseau, les conteneurs peuvent communiquer directement via le Container-IP du conteneur
Le pont Docker est virtualisé par l'hôte et n'est pas un véritable périphérique réseau. Le réseau externe ne l'est pas. adressable, ce qui signifie également que le réseau externe ne peut pas accéder au conteneur via Container-IP direct. Si le conteneur souhaite être accessible de l'extérieur, vous pouvez mapper le port du conteneur sur l'hôte hôte (mappage de port), c'est-à-dire l'activer via le paramètre -p ou -P lorsque Docker Run crée le conteneur et utiliser [host IP] lors de l'accès au conteneur : [Port du conteneur] Accédez au conteneur
1.Mode hôte
Si vous utilisez le mode hôte lors du démarrage du conteneur, le conteneur n'obtiendra pas d'espace de noms réseau indépendant, mais partagera un Espace de noms réseau avec l'hôte. Le conteneur ne virtualisera pas sa propre carte réseau, ne configurera pas sa propre adresse IP, etc., mais utilisera l'adresse IP et le port de l'hôte. Les conteneurs utilisant le mode hôte peuvent utiliser directement l'adresse IP de l'hôte pour. Communiquez avec le monde extérieur et le port de service à l'intérieur du conteneur peut également être utilisé. Le port de l'hôte ne nécessite pas de NAT. Le plus grand avantage de l'hôte est que les performances du réseau sont relativement bonnes, mais les ports sont déjà utilisés sur l'hôte docker. ne peut pas être réutilisé. L'isolation du réseau n'est pas bonne
2. Mode conteneurLe conteneur créé ne créera pas sa propre carte réseau et ne configurera pas sa propre adresse IP, mais partagera l'adresse IP et la plage de ports avec une plage spécifiée. conteneur. Ce mode spécifie que le conteneur nouvellement créé partage un espace de noms réseau avec un conteneur existant, plutôt qu'avec un partage d'hôte de conteneur existant. De même, outre le réseau, les deux conteneurs sont également isolés sur d'autres aspects tels que les systèmes de fichiers, les listes de processus, etc. Les processus des deux conteneurs peuvent communiquer via le périphérique de carte réseau lo
3.Mode AucunCe mode désactive la fonction réseau du conteneurEn utilisant le mode Aucun, le conteneur Docker possède cependant son propre espace de noms réseau. , ce n'est pas le conteneur Docker. Effectuez une configuration réseau. En d’autres termes, ce conteneur Docker n’a pas de carte réseau, d’adresse IP, de routage et autres informations. Nous devons nous-mêmes ajouter des cartes réseau, configurer l'IP, etc. au conteneur Docker. Dans ce mode réseau, le conteneur n'a que le réseau de bouclage lo et aucune autre carte réseau. Le mode aucun peut être spécifié via --network=none lors de la création du conteneur. Ce type de réseau ne peut pas être connecté à Internet. Un réseau fermé peut assurer la sécurité du conteneur
Une seule machine sans réseau est hautement sécurisée et peut stocker des données en toute sécurité sans être attaquée.
Ce mode allouera et définira l'adresse IP pour chaque conteneur, connectera le conteneur à un pont virtuel docker0 et configurera l'association avec l'hôte via le pont docker0 et la table nat iptables
Lorsque le processus Docker démarre, un pont virtuel nommé docker0 sera créé sur l'hôte et le conteneur Docker démarré sur cet hôte sera connecté à ce pont virtuel. Le pont virtuel fonctionne de la même manière qu'un commutateur physique, de sorte que tous les conteneurs de l'hôte sont connectés à un réseau de couche 2 via le commutateur
Attribuez une adresse IP du sous-réseau docker0 au conteneur et définissez l'adresse IP de docker0 comme conteneur la passerelle par défaut. Créez une paire de périphériques de paire de cartes réseau virtuelles sur l'hôte. Docker place une extrémité du périphérique de paire veth dans le conteneur nouvellement créé et le nomme eth0 (la carte réseau du conteneur) et l'autre extrémité dans l'hôte avec un nom similaire. comme vethxxx Nommez et ajoutez ce périphérique réseau au pont docker0. Vous pouvez le visualiser via la commande brctl show. Le mode pont est le mode réseau par défaut de Docker. Si vous n'écrivez pas le paramètre –net, c'est le mode pont. Lors de l'utilisation de docker run -p, docker crée en fait des règles DNAT dans iptables pour implémenter la fonction de redirection de port. Vous pouvez utiliser iptables -t nat -vnL pour afficher
En résumé
Hôte : partager l'espace de noms réseau/la pile de protocoles réseau avec l'hôte, le partage IP, le partage de plage de ports.
Conteneur : partager un espace de noms réseau entre plusieurs conteneurs , plusieurs conteneurs partagent la même plage d'adresses IP et de ports
Aucun : espace autonome, pas de carte réseau, aucune connexion réseau requise
Bridge : Bridge, le mode par défaut, créez un conteneur sans spécifier le mode réseau, ce mode est utilisé par défaut, le conteneur est connecté au pont docker0 via la paire Veth, le pont attribue l'IP au conteneur, et docker0 sert de le conteneur au sein du "LAN". La passerelle communique enfin avec la carte réseau hôte. En même temps, l'IP/le port du conteneur est cartographié via les règles IPtables pour l'interaction avec la carte réseau hôte. Apprentissage recommandé : "
tutoriel vidéo dockerCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!