Docker Toolbox - Localhost not working

2019-01-10 17:02发布

问题:

So I'm using Docker Toolbox because I don't have Hyper-V on my machine since it's not Windows 10 pro. Everything seems to work fine, but when I try to go on my browser 0.0.0.0:80 it always returns me: This site can’t be reached

But when I run the command: docker container ps I get the following: 0.0.0.0:80->80/tcp meaning that this address should work. I searched across stackoverflow and github issues. Now I'm stuck.

Am I missing something?

Thanks, Mark

EDIT:

Using docker-machine ip default returns me 192.168.99.100. I run that on port 80. I still get the same result except that the address becomes the container id: https://fd677edg12

I run that command on cmd to find my ipv4: cmd /k ipconfig /all. Put the result with the port and it returns the same thing: https://fd677edg12

回答1:

Docker Toolbox doesn't get as many conveniences as Docker for Windows, but you're correct in using it since you're on Home edition.

In Toolbox, nothing will be localhost, and will be 192.168.99.100 by default, since it's running a Linux VM in VirtualBox.

So if you run docker run -p 80:80 nginx

(notice I had to publish a port for 192.168.99.100 to listen on that port)

Then going to http://192.168.99.100 should work.



回答2:

I initially had a few issues with accessing my Applications at localhost:8080 while using DockerToolBox and OracleVM VirtualBox.

In VirtualBox:

  1. Click the appropriate machine (probably the one labeled "default")
  2. Settings
  3. Network > Adapter 1 > Advanced > Port Forwarding
  4. Click "+" to add a new Rule
  5. Set Host Port 8080 & Guest Port 8080; be sure to leave Host IP and Guest IP empty

Run the command:

docker run -p 8080:8080 ${image_id}


回答3:

I was following docker for windows tutorial in https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell and got stuck in step #6 when test nginx in the web browser. Seems I faced a similar problem since I also use Windows Home and don't have Hyper-V. My workaround is quite simple:

  1. check your docker IP default

$ docker-machine ip default

192.168.99.100

  1. Go to Oracle Virtual Machine to set for port forwarding. Make sure the network setting is NAT, and add port forwarding. Host IP: 127.0.0.1, Guest IP: 192.168.99.100, port all set to 80 like this

  2. Try again to your browser and run http://localhost or http://127.0.0.1 (can add the port 80 also). It should run.

The thing is that the nginx IP is meant to be accessible within the docker Virtual Machine, so that we need that port forwading setting in order to access it directly in the host machine's browser