gpt4 book ai didi

docker - 无法访问 Docker Nanoserver 容器 Web 应用程序

转载 作者:行者123 更新时间:2023-12-02 01:13:18 25 4
gpt4 key购买 nike

这个问题与其他关于 Windows 网络及其与 Docker 容器的关系的问题类似,但我似乎找不到解决我的确切问题的方法。

我正在为新的预构建预发布 .NET Core 1.1 应用程序设置 Docker 容器。我有一个 Dockerfile,可将应用程序构建到支持 nanoserver/.NET Core 1.1 的镜像中,但我无法从 Windows 主机访问正在运行的应用程序。

使用:在由 macOS/vmWare Fusion 8.5.1 托管的 Windows 10 Pro VM 上使用 Docker for Windows 17.0.31-ce-win10 (11972)。

给定以下 Dockerfile:


来自微软/dotnet:1.1-runtime-nanoserver
工作目录\应用程序
复制\out 。
曝光 80
曝光 5000
入口点 ["dotnet", "WebApi.dll"]

如果我使用命令 docker run {image} -P 5000:5000 我会得到以下输出(来自 .NET Core 1.1 Hello World 应用):


托管环境:生产
内容根路径:C:\app
现在正在收听:http://localhost:5000
申请开始。按 Ctrl+C 关闭。

然后,在另一个终端窗口中,我发出以下命令:

docker inspect {container-name} 我在哪里得到了这个显着的输出:


“网络”:{
“自然”:{
“IPAMConfig”:空,
“链接”:空,
“别名”:空,
“网络 ID”:“246469d0fe2936d87c5a923
“端点 ID”:“2401e38f20539ac9fe562e
“网关”:“172.20.64.1”,
"IP 地址": "172.20.76.30",
“IPPrefixLen”:16,
"IPv6网关": "",
"GlobalIPv6Address": "",
“GlobalIPv6PrefixLen”:0,
“Mac 地址”:“00:15:5d:33:3e:7a”
}
}

我无法使用以下位置访问网络应用程序:

localhost:5000, 172.20.76.30:80, 172.20.76.30:5000

但奇怪的是,如果我docker run microsoft/iis 我能够访问{container's IP}:80

鉴于上述情况,我做错了什么导致 Windows VM 主机无法访问我的 Web 应用程序容器?我能够 ping 172.20.76.30 并得到结果,我的容器能够 ping 172.20.64.1(它的网关 IP 对应于 Windows VM 主机)但那是就我能够确认两个网络主机之间的路径而言。

最后,我将以该应用程序在 Windows VM 上运行良好的观察结果作为结论。我能够直接发出完全相同的命令 dotnet WebApi.dll 并在 Chrome 中使用 localhost:5000 访问网站。

最佳答案

如果它开始工作是因为您切换到 aspnetcore 图像,那么它可能是端口映射问题而不是网络问题。 aspnetcore 基础镜像设置 ASP.NET Core 环境变量,告诉 Kestrel 监听端口 80,而不绑定(bind)到 localhost:5000。最后一条语句中的关键是 localhost,除非您另有说明,否则 Kestrel 仅适用于本地流量。来自您的主机的流量不是本地的,因此它不会起作用。

如果出于某种原因你想使用 dotnet 图像而不是 aspnetcore 图像,那么你可以将 ASPNETCORE_URL 环境变量设置为某个值像 http://+:5000 或任何你想要的端口。

关于docker - 无法访问 Docker Nanoserver 容器 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43917393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com