Docker Toolbox - Localhost não funciona

101

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 psrecebo o seguinte: 0.0.0.0:80->80/tcpo 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 defaultme 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

Marca
fonte
1
0.0.0.0 não é um endereço real, isso significa que a porta foi vinculada a todas as interfaces de host do dock (seu computador Windows). Tente localhost: 80 ou qualquer endereço IP do seu computador: 80
fvu
@fvu Ainda recebo "este site não pode ser acessado". Eu também tentei docker-machine default ip -> 192.168.99.100Então eu coloquei isso no endereço: 192.168.99.100:80Eu continuo com o mesmo resultado.
Marcos
1
Se você está sendo redirecionado, é o seu aplicativo que está quebrado. Supondo que o docker esteja sendo executado no mesmo computador, você deve ser capaz de localhost: 80
user2105103

Respostas:

180

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.100por 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.100escutar nessa porta)

Então, ir http://192.168.99.100deve funcionar.

Bret Fisher
fonte
Obrigado pela resposta. Estou seguindo seus passos, exceto adicionado docker run -p 80:80 -d nginx. Eu vou ao endereço e me redireciona para https://dev/, novamente diz que o site não pode ser alcançado. Também queria verificar se tinha algo é o hostsarquivo (embora eu saiba que não é localhost). Eu comentei tudo lá.
Mark
Depois de várias tentativas, finalmente consegui fazer funcionar. Infelizmente, não tenho certeza de qual era o problema.
Marcos,
1
Informações bônus: O Docker Toolbox (usado no Windows 7, 8, 8.1 e 10 Home) é realmente apenas um script de inicialização envolvido em docker-machinecli. Você pode usar docker-machine --helppara ver o que pode fazer para gerenciar o VirtualBox VM (ou criar mais).
Bret Fisher
64

Inicialmente, tive alguns problemas ao acessar meus aplicativos em localhost: 8080 ao usar DockerToolBox e OracleVM VirtualBox.

No VirtualBox:

  1. Clique na máquina apropriada (provavelmente aquela rotulada como "padrão")
  2. Configurações
  3. Rede> Adaptador 1> Avançado> Encaminhamento de porta
  4. Clique em "+" para adicionar uma nova regra
  5. Definir porta do host 8080e porta do convidado 8080; certifique-se de deixar o IP do host e o IP do convidado vazios

Execute o comando:

docker run -p 8080:8080 ${image_id}
EJJ
fonte
Devido à configuração do CORS na API remota, tenho que executar como localhost: 8080. Tão bom que é tão simples, obrigado!
phazei
1
Surpreendente. Em todos os lugares dizendo que não pode ser feito, mas aqui está.
superPhreshHackerKid
Além disso, certifique-se de não bagunçar outras coisas ouvindo nesta porta ou entradas localhost / 127.0.0.1 em seu arquivo hosts ( C:\Windows\System32\drivers\etc\hosts) - eu tive que verificar ambos antes de funcionar para mim ;-)
msa
Funcionou como charme!
Daggie Blanqx - Douglas Mwangi
44

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:

  1. verifique o padrão de IP do docker

$ docker-machine ip default

192.168.99.100

  1. 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

  2. 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

nitya wijayanti
fonte
2
Eu precisava de um caso em que as HOST:CONTAINERportas são diferentes, por exemplo docker run --detach --publish 8081:80 --name webserver nginx. Descobri que, neste caso, tive que encaminhar HOSTapenas a porta, ou seja, nas configurações do VirtualBox Host IP=127.0.0.1; Host Port=8081; Guest IP=192.168.99.100; Guest Port=8081, não 80como eu supunha antes. Parece que na minha máquina Windows 7 com Docker Toolbox, o Docker encaminha da porta do contêiner 80para 192.168.99:8081e eu encaminho de 192.168.99:8081para localhost:8081porque 192.168.99:8081não mostra nada no navegador da web.
1 de
13

Você pode usar em localhostvez de '192.168.99.100' seguindo as instruções:

Etapa # 01:

docker-machine ip default

Você verá o IP padrão

Etapa # 02:

docker-machine stop default

Etapa # 03:

  1. Abra o Gerenciador VirtualBox (a partir dos programas de inicialização no Windows Search VirtualBox Manager)
  2. Selecione sua imagem Docker Machine VirtualBox (por exemplo: padrão)
  3. Abra Configurações -> Rede -> Avançado -> Encaminhamento de porta
  4. Adicione o nome do seu aplicativo, a porta do host desejada e a porta do convidado 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:

docker-machine start default

Em seguida, basta iniciar seu contêiner do Docker e você poderá acessá-lo via localhost.

Dê uma olhada aqui para detalhes.

Bablu Ahmed
fonte
2

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:

> VBoxManage.exe controlvm "default" natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe controlvm "default" natpf1 delete nginx

Se a VM não estiver funcionando ou você quiser parar antes de alterá-la:

> docker-machine stop
> VBoxManage.exe modifyvm "default" --natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe modifyvm "default" --natpf1 delete "nginx"
> docker-machine start

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 .

James Irwin
fonte
2

Essa é outra maneira fácil de evitar digitar o ip 192.168.99.100. Vá para C:\Windows\System32\drivers\etc\hostse 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á.

Rasso
fonte
0

Depois de muitas tentativas, consegui este quadro de avisos.

  1. 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.

  2. 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)

  1. Depois disso, a página do seu navegador deve abrir para -

insira a descrição da imagem aqui

Espero que isso ajude a todos vocês!!

Ajay
fonte