J'ai
J'ai un certain nombre d'instances JBoss s'exécutant dans des images Docker (172.18.0.2 est une base de données):
qui courra en même temps. Chaque instance JBoss exportée, par exemple ses ports 8787, 8080 et 8443.
J'ai également créé un réseau ponté: Réseau docker create --driver bridge --subnet 172.18.0.0/24 bridged_network
Actuellement, j'ai configuré un transfert de port local de sorte que l'hôte puisse accéder aux différents services à l'aide d'un préfixe (par exemple, lorsqu'il accède au port 8080 de l'instance 1, l'hôte utilise localhost: 28080 pour se connecter). Mais c'est assez sujet aux erreurs.
Maintenant, je souhaite accéder à ces ports à partir de l'hôte en utilisant l'adresse IP du conteneur, par exemple. appelant 172.18.0.4:8080 (étape suivante: en utilisant le nom d'hôte: jboss-eap-arquillian: 8080) . Bien que cela fonctionne correctement d'un conteneur à l'autre, je n'ai pas été en mesure de le configurer pour la connexion. l'hôte.
Il existe une interface réseau Windows (type: DockerNAT) ayant l’adresse IP 10.0.75.1, mais il est possible que je l’aie créée manuellement (je ne sais pas ... j'essaie depuis un certain temps déjà). Mais cela est utile pour lier le port du conteneur à ce périphérique, par exemple. docker run ... -p 10.0.75.1:8080:8080. Je peux ensuite appeler le service en utilisant 10.0.75.1:8080, mais cela ne m'aide pas pour le deuxième conteneur.
J'ai également essayé d'utiliser le périphérique réseau du Docker Host, mais cela A. semble fonctionner pour une seule machine b. Je ne peux pas définir l'IP de manière statique, ce qui est nécessaire pour les tests JUnit exécutant une configuration statique . Remarque: je ne peux pas compter sur le réseau DHCP pour attribuer une IP au démarrage, car je change fréquemment de réseau (et donc de DHCP), résultant en une adresse IP non fixée à nouveau.
Donc, fondamentalement, je cherche un moyen de configurer le réseau/conteneur de manière à pouvoir appeler le service fourni par le conteneur (par exemple sur le port 8080) à l'aide de l'adresse IP du conteneur (par exemple, 172.18.0.3 pour l'exemple 1). de l'hôte à l'aide de 172.18.0.3:8080.
Sur le menu fixe pour Windows, vous pouvez utiliser l’adresse 10.0.75.1:8080, mais vous devez configurer votre pare-feu. Une meilleure méthode consiste à utiliser l’adresse 10.0.75.2:8080,
pour les deux adresses, vous devez publier votre port lorsque vous exécutez le conteneur
docker run -p 8080:8080 image_name
Plus d'infos https://github.com/docker/for-win/issues/334#issuecomment-297030101
vous ne pouvez pas. docker n'est pas une machine virtuelle et vous n'avez pas accès à l'hôte de docker via l'adresse IP.
voir ma même question ici: https://forums.docker.com/t/access-dockerized-services-via-the-containers-ip-address/21151
et ma réalisation de comment cela fonctionne, ici: https://derickbailey.com/2016/08/29/so-youre-saying-docker-isnt-a-virtual-machine/
si vous devez utiliser l'application hébergée dans le conteneur, à partir de votre hôte local, exposez le port de l'application avec l'option -p
de docker run
.
docker run -p 8080:8080 image_name
puis connectez-vous à localhost:8080
pour ce service