【问题标题】:Networking with Docker on Windows在 Windows 上与 Docker 联网
【发布时间】:2015-09-28 15:03:53
【问题描述】:

我使用这个官方指南在 Windows 7 机器上设置 Docker:

https://docs.docker.com/windows/started/

我成功地从 docker hub 拉取了一个镜像,我可以运行我自己的 docker 镜像了。

不,我无法在 Windows 上使用 docker 运行和访问网络服务器。显然,在 boot2docker 后面,我无法像以前那样到达我的 docker 容器。

-p 3007:80 添加到docker run 命令后,端口转发在容器列表(docker ps)中显示为0.0.0.0:3007 -> 80。通过-p 127.0.0.1:3007:80,我得到了一个更有意义的 IP 地址。但是,我无法使用 Windows 主机上的浏览器访问容器。

此外,docker inspect 没有透露正在运行的容器的 IP 地址(这似乎也是错误的)。

我也尝试了--net=host,但无济于事。

【问题讨论】:

    标签: windows networking docker


    【解决方案1】:

    随着 Docker Toolbox 的引入,情况发生了一些变化。现在您不直接与boot2docker 交互,而是使用docker-machine。尽管 boot2docker 仍然作为 VM 存在,但不再有 CLI-Tool。它已被 Docker Machine 取代。

    因此,您应该能够通过键入:docker-machine ip <machine-name> 来获取 VM 的 IP 地址。如果您有默认安装,您的机器名称将为default

    使用docker-machine active,您可以查看当前处于活动状态的虚拟机。使用该名称,您还可以使用docker-machine inspect <machine-name>

    您可以在official docs 中找到有关 Docker Machine 的更多信息。

    【讨论】:

    • 谢谢! docker-machine ip default 是我缺少的步骤。在文档中并不明显。
    【解决方案2】:

    到现在为止,事情的变化不止一点点:Docker 原生支持 Windows,不再需要 Boot2Docker 或 Docker Toolbox。您现在应该从 Windows 10(或 Windows Server 2016)开始。

    在我的 Docker on Windows 之旅中,我开发了一个最佳实践来检查网络服务器是否可访问:

    1. 运行您的容器(例如使用您提到的docker run -d -p hostport:containerport imagename
    2. Shell 到容器中(例如,使用 Windows 容器:docker exec -it containerName powershelldocker exec -it containerName bash,如果您使用 Linux 容器)并检查 iwr http://localhost:80 -UseBasicParsing 是否为您提供好看的 HTML 和 HTTP 状态 200
    3. 如果 2. 一切正常(只有这样),请检查容器的 IP(例如使用 docker network inspect dockerNetworkName,它会为您提供所有容器数据,包括内部 IP 地址)并将浏览器指向 http://containerIP:containerPort .
    4. 如果 3. 一切正常(再次:只有这样),请检查您是否可以使用 http://localhost:containerPort 访问您的网络服务器(这可能不适用于 Windows 容器,因为 localhost loopback isn´t working - 虽然它可以在较新的版本上运行Windows 10/Server 2016 版本)
    5. 最后一步(如果 1.、2. 和 3. 正常,4. 可选),尝试从 Windows 主机外部查找您的网络服务器(例如,如果您在 Virtual Box 中运行 Windows 主机,请注意端口转发配置!)

    【讨论】:

      猜你喜欢
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      • 2017-06-21
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      相关资源
      最近更新 更多