J'essaie d'accéder à la page d'accueil de Wildfly fonctionnant sur un conteneur Docker dans Windows 10 Pro. C'est ce que j'ai fait:
Tiré l'image:
docker pull jboss/wildfly
Exécutez le conteneur Wildfly (cela fonctionne bien, dans le journal Wildfly, je peux voir qu'il a démarré correctement):
docker run -it -p 8080:8080 jboss/wildfly
Trouvez l'ID du conteneur:
docker ps
Inspectez l'adresse IP:
docker inspect -f "{{ .NetworkSettings.IPAddress }}" cac63ed21d78
L'adresse IP est 172.17.0.2
, dans un navigateur, je vais sur http://172.17.0.2:8080/ mais le navigateur se bloque et expire. Qu'est-ce que je rate?
MISE À JOUR
J'ai aussi essayé avec 127.0.0.1:8080
et ça ne marche pas non plus
UPDATE2
Journal de la console:
docker --version
#Docker version 19.03.1, build 74b1e89e8a
docker run hello-world
#Hello from Docker!
docker run --detach --publish 8080:80 --name webserver nginx
#Unable to find image 'nginx:latest' locally
#latest: Pulling from library/nginx
#8ec398bc0356: Pull complete
#465560073b6f: Pull complete
#f473f9fd0a8c: Pull complete
#Digest: sha256:b2d89d0a210398b4d1120b3e3a7672c16a4ba09c2c4a0395f18b9f7999b768f2
#Status: Downloaded newer image for nginx:latest
#c5cdb6de11240b5fe33bc424779721e1b44948797fd6ff389004d0766b71dd17
docker ps
#CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c5cdb6de1124
#nginx "nginx -g 'daemon of" 10 minutes ago Up 10 minutes 0.0.0.0:8080->80/tcp webserver
10.0.75.x
une adresse externe et le navigateur essaie de la trouver sur le Web?docker --version
, 2.docker run hello-world
, 3.docker run --detach --publish 8080:80 --name webserver nginx
, 4. puis essayez d'ouvrir localhost: 8080localhost:8080
et ça expire.docker ps
spectaclesCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c5cdb6de1124 nginx "nginx -g 'daemon of" 10 minutes ago Up 10 minutes 0.0.0.0:8080->80/tcp webserver
Réponses:
Par défaut, lorsque vous créez un conteneur, il ne publie aucun de ses ports dans le monde extérieur. Le réseau 172.17.XX est interne. Si vous avez besoin de lier l'adresse IP à l'hôte ip run docker container avec l'option -p, comme ça:
-p 8080: 8080
la source
De: https://docs.docker.com/docker-for-windows/networking/
Il devrait donc être accessible à partir de http: // localhost: 8080
Si cela ne fonctionne pas, essayez l'exemple Windows
Qui devrait être accessible http: // localhost: 80
https://docs.docker.com/docker-for-windows/index#explore-the-application-and-run-examples
Si même cela échoue, essayez:
Et utilisez http: // [docker-machine-ip]: 80
la source
Les informations clés sont les suivantes
Docker container in Windows 10 Pro
: il s'agit d'une spécification très générique sur le fonctionnement de votre Docker sous Windows. Il peut y avoir beaucoup d' options , par exempleDocker for Windows
avec / sansLinux containers
,Docker toolbox
, par exemple à distance, ....Généralement, les conteneurs Docker sous Windows fonctionnent sur une sorte de machine virtuelle (Hyper-V, Virtualbox, ...). Il existe donc une couche réseau supplémentaire, qui peut ne pas être accessible directement à partir de votre espace de noms de réseau Windows. Mais l' exemple lié s'exécute sur une machine Linux, où cette couche réseau supplémentaire n'existe pas. Et c'est une raison pour laquelle l'exemple Linux copier / coller ne fonctionne pas sous Windows. Exécutez donc le conteneur comme d'habitude et exposez le port 8080:
Mais l'IP d'accès sera différent et l'IP du conteneur ne peut pas être utilisée, car ce réseau de docker interne n'est probablement pas accessible à partir de Windows. Essayez plutôt d'utiliser l'IP de votre système d'exploitation Windows. Vérifiez éventuellement la documentation de la
Docker on Windows
solution utilisée et trouvez l'IP utilisée pour les ports exposés.Si vous avez des compétences avancées de mise en réseau Windows / Linux, vous pouvez en quelque sorte router / transférer le port de l'espace de noms du réseau de conteneurs, via la couche réseau VM intermédiaire vers la couche réseau Windows. Mais cela peut être assez compliqué.
la source
8080:8080
c'est ce qui en théorie devrait fonctionner, mais ce n'est pas le cas. Je ne connais pas le réseautage, où dois-je commencer à chercher?There is no docker0 bridge on Windows: Because of the way networking is implemented in Docker Desktop for Windows, you cannot see a docker0 interface on the host. This interface is actually within the virtual machine.
. Veuillez gérer cette limitation.J'avais un pair travaillant sur un système Windows qui rencontrait le même problème. Il y a mis beaucoup d'efforts et n'a pu aller nulle part. Il semble que beaucoup de choses étranges se produisent avec Docker Desktop pour Windows. Nous venons enfin d'installer le sous-système Linux pour Windows et d'y installer Docker et cela a fonctionné comme un charme pour lui à partir de ce moment. Si vous souhaitez vous en tenir à Windows et que cela ne vous dérange pas de travailler sur le sous-système Linux, je vous suggère de suivre cette voie. Nous sommes allés plus loin que ce que Jan Garaj a suggéré et nous avons trouvé que c'était une perte de temps. Docker Desktop pour Windows est censé être un environnement où vous travaillez complètement à l'intérieur - en utilisant des conteneurs de développement, etc. Les éléments Host-Container sont pénibles.
la source