Je lance Tomcat dans mon conteneur de docker du dépôt officiel.
docker pull Tomcat
Et selon les instructions indiquées dans la homepage J'ai exécuté l'instance et le serveur Tomcat est démarré
docker run -it --rm -p 8888:8080 Tomcat:8.0
Et le serveur Tomcat est disponible sur le port 8888. Je peux obtenir la réponse dans le boot2docker lorsque j'exécute la commande suivante.
curl localhost:8888
Mais je voudrais accéder à la page à partir de mon navigateur Web installé sur mon PC (qui est hors de la Virtual Box, celle qui est installée dans mon Windows). Puis-je? Si c'est le cas, comment?
Il se peut qu'il manque une règle de transfert de port dans les paramètres de VirtualBox.
boot2docker vm > settings > Network > NAT adapter > Port forwarding
Notez la dernière entrée:
Ainsi, vous avez configuré toute la chaîne: hostPort:virtualBoxPort
puis virtualBoxPort:containerPort
, comme indiqué dans le diagramme suivant:
Il semble y avoir une meilleure réponse disponible depuis que Docker-Tools a été introduit il y a quelques mois. Si vous n'utilisez pas Docker Tools, consultez https://docs.docker.com/machine
Si vous utilisez Docker Tools,
$ docker-machine ls
$ docker-machine ip <machine-name>
$ curl 192.168.99.100
lancez boot2docker ip
pour obtenir l’adresse IP de votre pont fixe. Ensuite, vous pouvez exécuter curl BRIDGE_IP:8888
L’adresse IP sera quelque chose comme 192.168.59.103. Avec boot2docker, la pile de mise en réseau des ordinateurs virtuels n’est pas votre hôte local, mais fonctionne sur une interface virtuelle.
Utilisation de docker-machine ls
pour obtenir l'adresse IP de l'instance de Virtual Box exécutant le conteneur. Puis utilisez cela avec le port associé que vous avez exposé, dans mon cas 8080, donc http://192.168.99.100:8080
.
l'option -p
a l'argument hostPort:containerPort
. Ainsi, dans votre cas, le port 8080 (dans votre image de menu fixe) est mappé sur le port 8888 de l'hôte (votre zone Windows). Cela signifie que vous devriez pouvoir trouver le Tomcat sur votre machine Windows en ajoutant :8888
à votre URL, comme vous le faisiez avec curl.