本地主机不工作 docker windows 10
localhost not working docker windows 10
我正在使用 VS2017 docker 支持。 VS 为我创建了 DockerFile,当我构建 docker-compose 文件时,它会创建容器并在 172.x.x.x IP 地址上 运行s 应用程序。但是我想 运行 我在本地主机上的应用程序。
我做了很多事情,但没有任何效果。跟随 docker docs as a starter and building microsoft sample app 。第二个 link 工作正常,但在尝试第一个 link 方法时出现 HTTP 错误 404。
感谢任何帮助。
要访问 Docker 文档上发布的示例,您指出该示例不起作用,请按照以下步骤操作,
1 - 列出所有 运行ning docker 个容器
docker ps -a
执行 运行 这个命令后,您应该能够查看当前正在 运行 的所有 docker 容器,并且您应该会看到一个名称为 [=12= 的容器] 如果您正确地遵循了 docker 文档示例,则会在此处列出。
2 - 获取您的 webserver
容器所在的 IP 地址 运行ning。要做到这一点 运行 以下命令。
docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" webserver
您现在应该获得 webserver
容器所在的 IP 地址 运行ning,希望您熟悉此步骤,因为它甚至在您附加的构建 Microsoft 示例应用程序示例中可用与问题。
访问您获得的 IP 地址运行执行上述命令后,您应该会看到所需的输出。
回答你的第一个问题(在 docker 中使用本地主机访问 docker 容器用于 windows),在 Windows 主机中你无法使用本地主机访问容器,因为默认 NAT 网络堆栈中的限制。访问此link可以获得关于这个问题的更详细的解释。似乎 docker 文档尚未更新,但此问题仅存在于 Windows 主机中。
也报告了一个与此相关的问题 - 按照此 link 进行查看。
希望这对您有所帮助。
编辑
这个问题的解决方案似乎会在未来的 Windows 版本中出现。然而,该版本发布了此限制在 Windows 主机中可用。按照这个 link -> https://github.com/MicrosoftDocs/Virtualization-Documentation/issues/181
很可能不同的应用程序已经 运行 在端口 80 上。您必须将您的网站转发到 不同的 端口,例如:
docker run -d -p 5000:80 --name myapp myasp
并将浏览器指向 http://localhost:5000
。
启动容器时,您可以通过 -p
选项指定哪些内部端口将作为主机上的端口公开。 -p 80:80
将网站使用的 内部 端口 80
暴露给主机的端口 80。
Docker 不会抱怨,但如果 另一个 应用程序已经在端口 80 侦听,例如 IIS、另一个 Web 应用程序或任何 工具 的 Web 界面 运行 默认设置为 80。
解决方法是:
- 确保端口 80 上没有其他 运行 或
- 转发到不同的端口。
转发到不同的端口要容易得多。
为确保您可以连接到端口,请使用telnet 命令,例如:
telnet localhost 5000
如果您立即得到空白 window,则表示服务器已启动并且 运行正在此端口上。如果您在一段时间后收到一条消息并超时,则表示没有人 运行ning。您可以同时使用它来检查空闲端口 和 以确保您可以连接到您的容器 Web 应用程序。
PS 我 运行 一周前进入这个,因为我试图设置一个 SQL 服务器容器进行测试.我已经 运行 1 个默认实例和 2 个命名实例,并且 docker
在我尝试创建容器时根本没有抱怨。我花了一段时间才意识到哪里出了问题。
对于那些在 2022 年遇到此问题的人,将 localhost
更改为 127.0.0.1
为我解决了一个问题。
我正在使用 VS2017 docker 支持。 VS 为我创建了 DockerFile,当我构建 docker-compose 文件时,它会创建容器并在 172.x.x.x IP 地址上 运行s 应用程序。但是我想 运行 我在本地主机上的应用程序。
我做了很多事情,但没有任何效果。跟随 docker docs as a starter and building microsoft sample app 。第二个 link 工作正常,但在尝试第一个 link 方法时出现 HTTP 错误 404。
感谢任何帮助。
要访问 Docker 文档上发布的示例,您指出该示例不起作用,请按照以下步骤操作,
1 - 列出所有 运行ning docker 个容器
docker ps -a
执行 运行 这个命令后,您应该能够查看当前正在 运行 的所有 docker 容器,并且您应该会看到一个名称为 [=12= 的容器] 如果您正确地遵循了 docker 文档示例,则会在此处列出。
2 - 获取您的 webserver
容器所在的 IP 地址 运行ning。要做到这一点 运行 以下命令。
docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" webserver
您现在应该获得 webserver
容器所在的 IP 地址 运行ning,希望您熟悉此步骤,因为它甚至在您附加的构建 Microsoft 示例应用程序示例中可用与问题。
访问您获得的 IP 地址运行执行上述命令后,您应该会看到所需的输出。
回答你的第一个问题(在 docker 中使用本地主机访问 docker 容器用于 windows),在 Windows 主机中你无法使用本地主机访问容器,因为默认 NAT 网络堆栈中的限制。访问此link可以获得关于这个问题的更详细的解释。似乎 docker 文档尚未更新,但此问题仅存在于 Windows 主机中。
也报告了一个与此相关的问题 - 按照此 link 进行查看。
希望这对您有所帮助。
编辑
这个问题的解决方案似乎会在未来的 Windows 版本中出现。然而,该版本发布了此限制在 Windows 主机中可用。按照这个 link -> https://github.com/MicrosoftDocs/Virtualization-Documentation/issues/181
很可能不同的应用程序已经 运行 在端口 80 上。您必须将您的网站转发到 不同的 端口,例如:
docker run -d -p 5000:80 --name myapp myasp
并将浏览器指向 http://localhost:5000
。
启动容器时,您可以通过 -p
选项指定哪些内部端口将作为主机上的端口公开。 -p 80:80
将网站使用的 内部 端口 80
暴露给主机的端口 80。
Docker 不会抱怨,但如果 另一个 应用程序已经在端口 80 侦听,例如 IIS、另一个 Web 应用程序或任何 工具 的 Web 界面 运行 默认设置为 80。
解决方法是:
- 确保端口 80 上没有其他 运行 或
- 转发到不同的端口。
转发到不同的端口要容易得多。
为确保您可以连接到端口,请使用telnet 命令,例如:
telnet localhost 5000
如果您立即得到空白 window,则表示服务器已启动并且 运行正在此端口上。如果您在一段时间后收到一条消息并超时,则表示没有人 运行ning。您可以同时使用它来检查空闲端口 和 以确保您可以连接到您的容器 Web 应用程序。
PS 我 运行 一周前进入这个,因为我试图设置一个 SQL 服务器容器进行测试.我已经 运行 1 个默认实例和 2 个命名实例,并且 docker
在我尝试创建容器时根本没有抱怨。我花了一段时间才意识到哪里出了问题。
对于那些在 2022 年遇到此问题的人,将 localhost
更改为 127.0.0.1
为我解决了一个问题。