Estou tentando acessar a página de boas-vindas do Wildfly em execução em um contêiner do Docker no Windows 10 Pro. Isto é o que eu fiz:
Puxou a imagem:
docker pull jboss/wildfly
Execute o contêiner Wildfly (isso funciona bem, no log do Wildfly posso ver que ele foi iniciado corretamente):
docker run -it -p 8080:8080 jboss/wildfly
Encontre o ID do contêiner:
docker ps
Inspecione o endereço IP:
docker inspect -f "{{ .NetworkSettings.IPAddress }}" cac63ed21d78
O endereço IP é que 172.17.0.2
, em um navegador, vou para http://172.17.0.2:8080/, mas o navegador trava e o tempo limite é excedido. o que estou perdendo?
ATUALIZAR
Eu também tentei 127.0.0.1:8080
e também não está funcionando
UPDATE2
Log do 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
um endereço externo e o navegador tenta encontrá-lo na Web?docker --version
, 2.docker run hello-world
, 3.docker run --detach --publish 8080:80 --name webserver nginx
, 4. e tente abrir o host local: 8080localhost:8080
e expirou.docker ps
showsCONTAINER 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
Respostas:
Por padrão, quando você cria um contêiner, ele não publica nenhuma de suas portas no mundo externo. A rede 172.17.XX é interna. Se você precisar vincular o endereço IP ao host, execute o contêiner do docker ip com o sinalizador -p, assim:
-p 8080: 8080
fonte
De: https://docs.docker.com/docker-for-windows/networking/
Portanto, ele deve estar acessível em http: // localhost: 8080
Se isso não funcionar, tente o exemplo do Windows
O qual deve estar acessível http: // localhost: 80
https://docs.docker.com/docker-for-windows/index#explore-the-application-and-run-examples
Se mesmo isso falhar, tente:
E use http: // [docker-machine-ip]: 80
fonte
As informações principais são
Docker container in Windows 10 Pro
- esta é uma especificação muito genérica de como o Docker no Windows funciona. Pode haver muitas opções, por exemplo,Docker for Windows
com / semLinux containers
,Docker toolbox
instância remota, ....Geralmente, os contêineres do Docker no Windows são executados em algum tipo de máquina virtual (Hyper-V, Virtualbox, ...), geralmente. Portanto, há uma camada de rede adicional, que pode não estar acessível diretamente no namespace da rede do Windows. Mas o exemplo vinculado é executado na máquina Linux, onde essa camada de rede adicional não existe. E é por isso que o exemplo de copiar / colar Linux não funciona no Windows. Portanto, execute o contêiner normalmente e exponha a porta 8080:
Mas o IP para acesso será diferente e o IP do contêiner não pode ser usado, porque é provável que a rede interna do Docker não esteja acessível no Windows. Em vez disso, tente usar o IP do seu sistema operacional Windows. Eventualmente, verifique a documentação dos
Docker on Windows
solução e descubra qual IP é usado para portas expostas.Se você possui conhecimentos avançados de rede em janelas / linux, pode, de alguma forma, rotear / encaminhar a porta do espaço de nomes da rede de contêiner, através da camada intermediária de rede da VM para a camada de rede do Windows. Mas pode ser bem complicado.
fonte
8080:8080
é o que em teoria deve funcionar, mas não funciona. Não sei sobre redes, onde devo começar a procurar?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.
. Por favor, lide com essa limitação.Eu tinha um colega trabalhando em um sistema Windows que enfrentava o mesmo problema. Ele se esforçou bastante e não conseguiu chegar a lugar algum. Parece que há muitas coisas estranhas no Docker Desktop para Windows. Finalmente instalamos o subsistema linux para windows e instalamos o docker lá e, a partir de então, funcionou como um encanto para ele. Se você deseja manter o Windows e não se importa de trabalhar no subsistema Linux, sugiro que siga esse caminho. Fomos além do que Jan Garaj sugeriu e achamos que é uma perda de tempo. O Docker Desktop para Windows deve ser um ambiente em que você trabalha completamente nele - usando contêineres de desenvolvimento, etc. O material Host-Container é um problema.
fonte