109

所以我使用 Docker Toolbox 是因为我的机器上没有 Hyper-V,因为它不是 Windows 10 专业版。一切似乎都正常,但是当我尝试使用浏览器0.0.0.0:80时,它总是返回我:无法访问此站点

但是当我运行命令时:docker container ps我得到以下信息:0.0.0.0:80->80/tcp这意味着这个地址应该可以工作。我搜索了stackoverflow和github问题。现在我被困住了。

我错过了什么吗?

谢谢,马克

编辑:

使用docker-machine ip default返回我192.168.99.100。我在端口 80 上运行它。我仍然得到相同的结果,只是地址变成了容器 ID:https://fd677edg12

我在 cmd 上运行该命令以找到我的 ipv4: cmd /k ipconfig /all。将结果与端口放在一起,它会返回相同的内容:https://fd677edg12

4

7 回答 7

185

Docker Toolbox 没有 Docker for Windows 那样方便,但您使用它是正确的,因为您使用的是家庭版。

在 Toolbox 中,没有任何内容localhost,并且默认情况下将是192.168.99.100,因为它在 VirtualBox 中运行 Linux VM。

所以如果你跑docker run -p 80:80 nginx

(注意我必须发布一个端口192.168.99.100来监听该端口)

然后去http://192.168.99.100应该工作。

于 2017-03-19T11:28:22.793 回答
67

在使用 DockerToolBox 和 OracleVM VirtualBox 时,我最初在 localhost:8080 访问我的应用程序时遇到了一些问题。

在 VirtualBox 中:

  1. 单击适当的机器(可能是标有“默认”的机器)
  2. 设置
  3. 网络 > 适配器 1 > 高级 > 端口转发
  4. 单击“+”添加新规则
  5. 设置主机端口8080和访客端口8080;确保将主机 IP 和访客 IP 留空

运行命令:

docker run -p 8080:8080 ${image_id}
于 2017-08-22T16:01:18.963 回答
47

我在https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell中关注 docker for windows 教程,并在 Web 浏览器中测试 nginx 时卡在第 6 步. 似乎我也遇到了类似的问题,因为我也使用 Windows Home 并且没有 Hyper-V。我的解决方法很简单:

  1. 检查您的 docker IP 默认值

$ docker-machine ip 默认

192.168.99.100

  1. 转到 Oracle 虚拟机以设置端口转发。确保网络设置为 NAT,并添加端口转发。主机IP:127.0.0.1,访客IP:192.168.99.100,端口都设置为80 这样

  2. 再次尝试在您的浏览器中运行http://localhosthttp://127.0.0.1(也可以添加端口 80)。它应该运行。

问题是 nginx IP 意味着可以在 docker 虚拟机中访问,因此我们需要该端口转发设置才能直接在主机的浏览器中访问它

于 2017-12-18T11:24:02.853 回答
14

您可以localhost按照以下说明使用“192.168.99.100”代替:

步骤#01:

docker-machine ip default

您将看到默认 IP

步骤#02:

docker-machine stop default

步骤#03:

  1. 打开 VirtualBox 管理器(从 windows 中的启动程序中搜索VirtualBox Manager
  2. 选择您的 Docker Machine VirtualBox 映像(例如:默认)
  3. 打开设置->网络->高级->端口转发
  4. 添加您的应用名称、所需的主机端口和您的访客端口 i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80

步骤 #04: 现在您已准备好通过执行以下命令来启动 Docker 机器:

docker-machine start default

然后只需启动您的 Docker 容器,您就可以通过 localhost 访问它。

在这里查看详细信息。

于 2019-05-22T18:47:48.483 回答
2

要映射预期的端口localhost而不是直接访问 docker-machine IP,您可以使用 VirtualBox CLI。

如果 docker-machine VM(这里称为default)正在运行,添加和删除如下规则:

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

如果 VM 没有运行,或者您想在更改它之前停止:

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

其中端口转发规则的格式为[<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>.

请注意,在 VirtualBox 中,您要映射到 Docker 映射的主机端口,而不是内部容器端口。您正在映射主机 -> 虚拟机,然后 Docker 映射虚拟机 -> 容器。

请参阅VirtualBox 文档

于 2019-08-08T16:46:48.873 回答
2

这是避免输入 ip 192.168.99.100 的另一种简单方法。转到C:\Windows\System32\drivers\etc\hosts并在文件末尾添加:

192.168.99.100 docker.awesome或您喜欢的任何名称。

Save the file (You need to have admin rights so make sure you right click on the file and run as administrator to be able to save it when you edit it).

Go to your chosen domain name, docker.awesome:8080 in this case and there you have it.

于 2019-11-23T19:18:18.513 回答
0

After lot of trials, I was able to get this bulletin board.

  1. The docker run command I used - docker run -p 4680:8080 --name bb bulletinboard:1.0 Here, 4680 is localhost port number. 8080 is container port number, the port at which the container will be listening. This port number is mentioned in the EXPOSE command in the Dockerfile.

  2. Then, go to web-browser and type 192.168.99.100:4680

Here, 192.168.99.100 is the docker machine IP address (use command -> docker-machine ip)

  1. After this, your browser page should open to -

enter image description here

Hope this helps you all!!

于 2020-07-08T08:20:44.290 回答