Tom*_*ker 2 c# docker kubernetes asp.net-core
我有一个非常简单的 asp.net core 应用程序(支持 Linux 的 Docker 支持的 C# Web 应用程序),当我构建 docker 映像并尝试在本地 PC 上运行它时,会发生以下情况;\n在 docker 中,我的映像名为 test,我输入 docker run test,此时它会显示“内容根路径:/app 现在正在监听:http://[::]:80 ”\n即使当我输入 docker ps 时,我也可以看到进程正在运行,当我尝试导航到 localhost:80 我得到的只是漫长的等待,然后“此站点可以\xe2\x80\x99t 到达,本地主机拒绝连接。”
\n\n我输入了
\n\ndocker inspect -f \'{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}\' ec158cc3b344
这给了我容器的IP地址,但即使直接导航到容器,如果我在端口80上导航,我也会得到“这个站点可以\xe2\x80\x99t被访问\n”,或者如果我尝试“你的连接被中断”直接访问IP。
\n\n我还尝试完全跳过 docker 并将映像部署到 Kubernetes,看看这是否会给我带来任何运气,但是当我尝试访问服务外部 IP(在本例中为 localhost)时,我得到以下信息\n"此页面\xe2\x80\x99t 无法工作,本地主机未\xe2\x80\x99t 发送任何数据。”
\n\n我也尝试使用
\n\nkubectl get pods -o wide
并直接访问 Pod 的 IP,但这只是给我“这个 10.1.0.32 页面可以\xe2\x80\x99t 被发现”,例如。
\n\n如果您想知道,这是我的 dockerfile 和 kubernetes 部署 .yml
\n\nFROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base\nWORKDIR /app\nEXPOSE 80\n\nFROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build\nWORKDIR /src\nCOPY ["Test/Test.csproj", "Test/"]\nRUN dotnet restore "Test/Test.csproj"\nCOPY . .\nWORKDIR "/src/Test"\nRUN dotnet build "Test.csproj" -c Release -o /app\n\nFROM build AS publish\nRUN dotnet publish "Test.csproj" -c Release -o /app\n\nFROM base AS final\nWORKDIR /app\nCOPY --from=publish /app .\nENTRYPOINT ["dotnet", "Test.dll"]\n
Run Code Online (Sandbox Code Playgroud)\n\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: test\nspec:\n replicas: 3\n selector:\n matchLabels:\n app: test\n template:\n metadata:\n labels:\n app: test\n spec:\n containers:\n - name: test\n image: <DockerEndpoint>.io/test:v5 #Sorry, can\'t include the real endpoint!\n ports:\n - containerPort: 8080\n---\napiVersion: v1\nkind: Service\nmetadata:\n name: test\nspec:\n type: LoadBalancer\n ports:\n - port: 80\n targetPort: 8080\n selector:\n app: test\n
Run Code Online (Sandbox Code Playgroud)\n\n我还了解到 .net core 以奇怪的方式工作,除非你告诉它,否则不允许它向外界公开其端口,但这与我对 docker/kubernetes 堆栈的相对陌生相结合,让我感到困惑。
\n\n有谁知道我如何制作一个 .net core 应用程序,任何应用程序,与 docker 一起工作?
\n\nPS 我真的使用这样一个简单的应用程序,即使我创建一个带有 docker 支持的全新 .net core 应用程序,并尝试立即构建和运行基本的 .net core 应用程序,它也不起作用。我无法让它与任何 .net core 应用程序一起工作!
\n当它说监听时http://[::]:80
,它正在谈论容器中的本地主机。http://localhost
当您尝试通过计算机上运行的网络浏览器访问它时,localhost
是您的计算机,而不是容器。您需要使用容器的IP。
从您的描述来看,听起来您也尝试过这样做,但您没有理由对此有任何问题。您要么没有获得正确的 IP,要么您做了其他不正确的事情(此处未详细说明)。
归档时间: |
|
查看次数: |
4335 次 |
最近记录: |