web-dev-qa-db-fra.com

Wildfly dans le conteneur Docker ne démarre pas

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

MISE À JOUR2

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
ps0604

De: https://docs.docker.com/docker-for-windows/networking/

La redirection de port fonctionne pour localhost; --publier, -p ou -P tous les travaux. Les ports exposés à partir de Linux sont transmis à l'hôte.

Il devrait donc être accessible depuis http: // localhost: 808


Si cela ne fonctionne pas, essayez l'exemple Windows

docker run -d -p 80:80 --name webserver nginx

Qui devrait être accessible http: // localhost: 8

https://docs.docker.com/docker-for-windows/index#explore-the-application-and-run-examples


Si même cela échoue, essayez:

docker-machine ip default

Et utilisez http: // [docker-machine-ip]: 8

2
Tyhal

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.X.X est interne. Si vous devez lier une adresse IP à un conteneur Docker run ip hôte avec l'indicateur -p, comme ceci:

-p 8080: 8080

Mappez TCP port 8080 dans le conteneur au port 8080 sur l'hôte Docker

2
Ivan Vovk

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.

0
Sam Thomas

Les informations clés sont 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 de nombreuses options, par exemple Docker for Windows avec sans Linux containers, Docker toolbox, instance distante, ....

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 réseau Windows. Mais exemple lié fonctionne 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:

docker run -it -p 8080:8080 jboss/wildfly

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 Docker on Windows solution et trouver quelle IP est 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 intermédiaire VM vers la couche réseau Windows. Mais cela peut être assez compliqué.

0
Jan Garaj