Qu'est --net=option hôte dans le Panneau de commande de vraiment faire?
Je suis un peu débutant à Docker. Je ne pouvais pas trouver toute description claire de ce que cette option dans le panneau de commande exécuter dans une profonde et peu confus à ce sujet.
Pouvons-nous l'utiliser pour accéder aux applications en cours d'exécution sur les conteneurs docker sans spécifier de port? Comme un exemple, si je lance une application web déployée par l'intermédiaire d'une image docker dans le port 8080 par l'utilisation de l'option -p 8080:8080
dans le panneau de commande exécuter, je sais que je vais avoir accès sur le port 8080 sur les conteneurs Docker ip /theWebAppName. Mais je ne peux pas vraiment penser à une façon de comment --net=host
option fonctionne.
Vous devez vous connecter pour publier un commentaire.
Après le panneau d'installation, vous avez 3 réseaux par défaut:
J'essaie de garder cela simple. Donc, si vous commencez un conteneur par défaut, il sera créé à l'intérieur de la passerelle (docker0) réseau.
Dans le dockerfile de jenkins les ports
8080
et50000
sont exposés. Ces ports sont ouverts pour le conteneur sur son pont réseau. Donc, tout à l'intérieur de ce pont réseau peut accéder au conteneur sur le port8080
et50000
. Tout dans le pont réseau est dans le privé gamme de"Subnet": "172.17.0.0/16",
Si vous voulez y accéder de l'extérieur, vous devez mapper les ports avec-p 8080:8080
. Cela permettra de mapper le port de votre conteneur au port de votre serveur réel (le réseau de l'hôte). Afin d'accéder à votre serveur sur8080
à votre bridgenetwork sur le port8080
.Maintenant vous avez aussi votre réseau hôte. Qui n'a pas de placer les conteneurs de réseautage. Donc, si vous commencez un conteneur dans le réseau de l'hôte, il ressemblera à ceci (c'est le premier):
La différence avec les ports. Votre conteneur est maintenant à l'intérieur de votre réseau hôte. Donc, si vous ouvrez le port
8080
sur votre hôte vous permettra d'accéder au conteneur immédiatement.J'ai ouvert le port
8080
dans mon pare-feu, et lorsque je suis maintenant accès aux mon serveur sur le port8080
je suis à accéder à mon jenkins. Je pense que ce blog est également utile de mieux le comprendre.--net=host
à l'intérieur d'un Dockerfile ?docker build --network=host
. L'hôte spécifié réseau pour docker construire est uniquement pour le téléchargement des paquets qui sont nécessaires pour la construction de l'image. Lorsque vous voulez exécuter votre récipient sur le réseau de l'hôte, vous aurez toujours besoin de définir l' --réseau=option hôte.reste la même, le premier conteneur commence bien , mais le même service à partir de la deuxième conteneur sera un échec.
donc, pour éviter cela, soit modifier les mappages de ports ou de créer un réseau.