Portanto, estou usando o Docker Toolbox porque não tenho o Hyper-V em minha máquina, pois não é o Windows 10 pro. Tudo parece funcionar bem, mas quando tento acessar meu navegador 0.0.0.0:80
, sempre me retorna: Este site não pode ser acessado
Mas quando executo o comando: docker container ps
recebo o seguinte: 0.0.0.0:80->80/tcp
o que significa que este endereço deve funcionar. Eu pesquisei em problemas de stackoverflow e github. Agora estou preso.
Estou esquecendo de algo?
Obrigado, Mark
EDITAR:
Usando docker-machine ip default
me retorna 192.168.99.100
. Eu executo isso na porta 80. Ainda obtenho o mesmo resultado, exceto que o endereço se torna o id do contêiner:https://fd677edg12
Eu corro esse comando no cmd para encontrar meu ipv4: cmd /k ipconfig /all
. Coloque o resultado com a porta e ele retorna a mesma coisa:https://fd677edg12
fonte
docker-machine default ip -> 192.168.99.100
Então eu coloquei isso no endereço:192.168.99.100:80
Eu continuo com o mesmo resultado.Respostas:
O Docker Toolbox não tem tantas conveniências quanto o Docker para Windows, mas você está correto em usá-lo, já que está na edição Home.
No Toolbox, nada será
localhost
, e será192.168.99.100
por padrão, já que está executando uma VM Linux no VirtualBox.Então se você correr
docker run -p 80:80 nginx
(observe que tive que publicar uma porta para
192.168.99.100
escutar nessa porta)Então, ir
http://192.168.99.100
deve funcionar.fonte
docker run -p 80:80 -d nginx
. Eu vou ao endereço e me redireciona parahttps://dev/
, novamente diz que o site não pode ser alcançado. Também queria verificar se tinha algo é ohosts
arquivo (embora eu saiba que não é localhost). Eu comentei tudo lá.docker-machine
cli. Você pode usardocker-machine --help
para ver o que pode fazer para gerenciar o VirtualBox VM (ou criar mais).Inicialmente, tive alguns problemas ao acessar meus aplicativos em localhost: 8080 ao usar DockerToolBox e OracleVM VirtualBox.
No VirtualBox:
8080
e porta do convidado8080
; certifique-se de deixar o IP do host e o IP do convidado vaziosExecute o comando:
fonte
C:\Windows\System32\drivers\etc\hosts
) - eu tive que verificar ambos antes de funcionar para mim ;-)Eu estava seguindo o tutorial do docker para windows em https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell e fiquei paralisado na etapa 6 ao testar o nginx no navegador da web . Parece que enfrentei um problema semelhante porque também uso o Windows Home e não tenho o Hyper-V. Minha solução alternativa é bastante simples:
Vá para Oracle Virtual Machine para definir o encaminhamento de porta. Certifique-se de que a configuração de rede seja NAT e adicione o encaminhamento de porta. IP do host: 127.0.0.1, IP do convidado: 192.168.99.100, porta configurada para 80 assim
Tente novamente em seu navegador e execute http: // localhost ou http://127.0.0.1 (pode adicionar a porta 80 também). Deve funcionar.
O fato é que o IP nginx deve ser acessível dentro da máquina virtual docker, de modo que precisamos dessa configuração de porta para vadear para acessá-lo diretamente no navegador da máquina host
fonte
HOST:CONTAINER
portas são diferentes, por exemplodocker run --detach --publish 8081:80 --name webserver nginx
. Descobri que, neste caso, tive que encaminharHOST
apenas a porta, ou seja, nas configurações do VirtualBoxHost IP=127.0.0.1
;Host Port=8081
;Guest IP=192.168.99.100
;Guest Port=8081
, não80
como eu supunha antes. Parece que na minha máquina Windows 7 com Docker Toolbox, o Docker encaminha da porta do contêiner80
para192.168.99:8081
e eu encaminho de192.168.99:8081
paralocalhost:8081
porque192.168.99:8081
não mostra nada no navegador da web.Você pode usar em
localhost
vez de '192.168.99.100' seguindo as instruções:Etapa # 01:
Você verá o IP padrão
Etapa # 02:
Etapa # 03:
VirtualBox Manager
)i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80
Etapa # 04: agora você está pronto para iniciar sua máquina Docker executando o seguinte:
Em seguida, basta iniciar seu contêiner do Docker e você poderá acessá-lo via localhost.
Dê uma olhada aqui para detalhes.
fonte
Para mapear as portas esperadas para
localhost
vez de acessar o IP da máquina docker diretamente, você pode usar a CLI do VirtualBox.Se a VM docker-machine (aqui chamada
default
) estiver em execução, adicione e exclua regras como esta:Se a VM não estiver funcionando ou você quiser parar antes de alterá-la:
Onde o formato da regra de encaminhamento de porta é
[<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>
.Observe que no VirtualBox, você deseja mapear para a porta do host do mapa do Docker, não para a porta do contêiner interno. Você está mapeando host -> VM, então o Docker mapeia VM -> contêiner.
Veja a documentação do VirtualBox .
fonte
Essa é outra maneira fácil de evitar digitar o ip 192.168.99.100. Vá para
C:\Windows\System32\drivers\etc\hosts
e adicione no final do arquivo:192.168.99.100 docker.awesome
ou qualquer nome de seu gosto.Salve o arquivo (você precisa ter direitos de administrador, portanto, certifique-se de clicar com o botão direito do mouse no arquivo e executar como administrador para poder salvá-lo ao editá-lo).
Vá para o nome de domínio escolhido, docker.awesome: 8080 neste caso e aí está.
fonte
Depois de muitas tentativas, consegui este quadro de avisos.
O comando docker run que usei - docker run -p 4680: 8080 --name bb bulletinboard: 1.0 Aqui, 4680 é o número da porta localhost. 8080 é o número da porta do contêiner, a porta na qual o contêiner estará atendendo. Este número de porta é mencionado no comando EXPOSE no Dockerfile.
Em seguida, vá para o navegador da web e digite 192.168.99.100:4680
Aqui, 192.168.99.100 é o endereço IP da máquina docker (use o comando -> ip da máquina docker)
Espero que isso ajude a todos vocês!!
fonte