【问题标题】:Docker Toolbox - Localhost not workingDocker 工具箱 - 本地主机不工作
【发布时间】:2025-12-04 07:35:01
【问题描述】:

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

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

我错过了什么吗?

谢谢, 标记

编辑:

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

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

【问题讨论】:

  • 0.0.0.0 不是实际地址,这意味着该端口已绑定到所有 docker 的主机(您的 windows 计算机)接口。尝试 localhost:80 或您计算机的任何 IP 地址:80
  • @fvu 我仍然收到“无法访问此站点”。我也试过docker-machine default ip -> 192.168.99.100所以我把这个放在地址里:192.168.99.100:80我仍然得到同样的结果。
  • 如果你被重定向——那是你的应用坏了。假设 docker 在同一台计算机上运行,​​你应该可以localhost:80

标签: windows docker docker-toolbox


【解决方案1】:

Docker Toolbox 没有 Docker for Windows 提供那么多便利,但您使用它是正确的,因为您使用的是家庭版。

在 Toolbox 中,什么都不会是 localhost,默认情况下会是 192.168.99.100,因为它在 VirtualBox 中运行 Linux 虚拟机。

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

(请注意,我必须为192.168.99.100 发布一个端口才能监听该端口)

然后转到http://192.168.99.100 应该可以。

【讨论】:

  • 感谢您的回复。除了添加docker run -p 80:80 -d nginx,我正在按照您的步骤操作。我转到该地址,它会将我重定向到https://dev/,它再次表示无法访问该站点。我还想验证我是否有任何东西是hosts 文件(尽管我知道它不是本地主机)。我评论了那里的所有内容。
  • 经过几次尝试,我终于成功了。可悲的是,我不太确定问题出在哪里。
  • 额外信息:Docker 工具箱(用于 Windows 7、8、8.1 和 10 Home)实际上只是一个围绕 docker-machine cli 的启动脚本。您可以使用docker-machine --help 来查看您可以做些什么来管理 VirtualBox 虚拟机(或创建更多虚拟机)。
【解决方案2】:

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

在 VirtualBox 中:

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

运行命令:

docker run -p 8080:8080 ${image_id}

【讨论】:

  • 由于远程 API 上的 CORS 设置,我必须以 localhost:8080 身份运行。太棒了,太简单了,谢谢!
  • 另外,请确保您不会与已经在此端口上侦听的其他内容或主机文件中的 localhost/127.0.0.1 条目(C:\Windows\System32\drivers\etc\hosts)混淆 - 我必须同时进入在它对我有用之前检查一下;-)
【解决方案3】:

我在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,并添加端口转发。 Host IP:127.0.0.1,Guest IP:192.168.99.100,端口全部设置为80 like this

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

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

【讨论】:

  • HOST:CONTAINER 端口不同时,我需要一个案例,例如docker run --detach --publish 8081:80 --name webserver nginx。发现在这种情况下我只需要转发HOST 端口,即在VirtualBox 设置中Host IP=127.0.0.1Host Port=8081; Guest IP=192.168.99.100; Guest Port=8081,而不是我之前想象的 80。看起来在我的带有 Docker Toolbox 的 Windows 7 机器中,Docker 从容器端口 80 转发到 192.168.99:8081,我从 192.168.99:8081 转发到 localhost:8081,因为 192.168.99:8081 在 Web 浏览器中没有显示任何内容。
【解决方案4】:

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

步骤#01:

docker-machine ip default

您将看到默认 IP

步骤#02:

docker-machine stop default

步骤#03:

  1. 打开VirtualBox Manager(在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 访问它。

Have a look here了解详情。

【讨论】:

    【解决方案5】:

    要将预期的端口映射到 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
    

    如果虚拟机没有运行,或者您想在更改之前停止:

    > 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 映射的 host 端口,而不是内部容器端口。您正在映射主机 -> 虚拟机,然后 Docker 映射虚拟机 -> 容器。

    请参阅VirtualBox docs

    【讨论】:

      【解决方案6】:

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

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

      保存文件(您需要具有管理员权限,因此请确保您右键单击该文件并以管理员身份运行,以便在您编辑它时能够保存它)。

      转到您选择的域名,在本例中为 docker.awesome:8080,您就拥有了。

      【讨论】:

        【解决方案7】:

        经过多次尝试,我得到了这个公告板。

        1. 我使用的docker run命令——docker run -p 4680:8080 --name bb bulletinboard:1.0 这里,4680 是本地主机端口号。 8080 是容器端口号,容器将监听的端口。此端口号在 Dockerfile 的 EXPOSE 命令中提及。

        2. 然后,进入网络浏览器并输入 192.168.99.100:4680

        这里,192.168.99.100是docker机器IP地址(使用命令->docker-machine ip)

        1. 之后,您的浏览器页面应打开至 -

        希望对大家有帮助!!

        【讨论】: