当前位置: 首页 > 面试题库 >

为什么ASPNET核心从Docker内部从端口80开始?

缪修德
2023-03-14
问题内容

TL; DR: 为什么aspnet核心应用程序在Docker映像中的端口80上运行,而在Docker映像之外的端口上运行5000。

阐述

我浏览了在这里找到的aspnet core / docker教程:https : //docs.microsoft.com/zh-
cn/dotnet/core/docker/building-net-docker-
images

在页面的一半处,我按照规定启动了以下应用程序:

dotnet run

除其他外,这将打印以下内容:

Now Listening on: http://localhost:5000

大。那是我的期望。本教程的下一步是从Docker映像中启动完全相同的应用程序。

docker build -t aspnetapp .
docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp

这导致

Now listening on: http://[::]:80

等待。? 为什么aspnet核心应用程序在端口80上运行? 当我直接从计算机运行它时,它在端口5000上运行。没有配置文件更改。

我怀疑它与基本docker映像有关,但是对docker的掌握还不够熟练。


问题答案:

microsoft/aspnetcore-build容器建立在顶部microsoft/aspnetcore容器。在该dockerhub页说:

端口说明

此图像将ASPNETCORE_URLS环境变量设置为http://
+:80
,这意味着,如果您尚未通过Application.cs中的app.UseUrl在应用程序中显式设置URL,则您的应用程序将在端口上侦听80在容器内。

因此,这是容器主动将端口设置为80。如果需要,您可以通过在您的端口中进行设置来覆盖它Dockerfile

ENV ASPNETCORE_URLS = http:// +:5000

另外,值得注意的是,由于使用了docker命令,http://localhost:5000无论您是直接运行应用程序还是在容器中运行应用程序,您仍然可以访问该应用程序



 类似资料:
  • 问题内容: 我们有一台服务器(用C和C ++编写),当前可以捕获SEGV并将一些内部信息转储到文件中。我想生成一个核心文件,并在捕获SEGV时将其写入磁盘,因此我们的支持代表和客户不必大惊小怪的ulimit,然后等待崩溃再次发生才能获得核心文件。过去我们使用过abort函数,但是它受ulimit规则的约束,无济于事。 我们有一些旧的代码可以读取/ proc / pid / map并手动生成一个核心

  • 我正在尝试运行我的asp。net核心wep应用程序在docker容器中使用官方的Microsoft asp。net核心2.1映像。我的应用程序使用端口5000公开api。此端口在appSettings.json的自定义部分中配置 这是我使用的泊坞站命令 在索引容器日志中,我得到了以下信息: 当我试图去 http://localhost:5000 时,我会ERR_EMPTY_RESPONSE。似乎容

  • 主要内容:创建一个核心,使用create命令,使用create_core命令,删除核心Solr核心(Core)是Lucene索引的运行实例,包含使用它所需的所有Solr配置文件。我们需要创建一个Solr Core来执行索引和分析等操作。 Solr应用程序可以包含一个或多个核心。 如果需要,Solr应用程序中的两个核心可以相互通信。 创建一个核心 安装和启动Solr后,可以连接到Solr的客户端(Web界面)。访问以下网址: http://Localhost:8983/solr/ 如

  • 核心接口类 如上图所示,Angel的核心接口类,在Train的过程中,按照调用的流程,大体为: MLRunner MLRunner根据Conf,从工厂类,创建AngelClient,按照标准的Train流程开始依次调用AngelClient的各接口 AngelClient 启动PSServer 在PSServer上进行初始化,加载空白的模型 训练完成后,将模型从多个PSServer,保存到HDFS

  • 问题内容: 通过阅读AWS文档,似乎将Docker用作Elastic Beanstalk(EB)(与Tomcat等相对)的平台时,只能公开一个端口。我试图了解为什么亚马逊创建了此限制- 看来您现在甚至无法同时提供HTTP和HTTPS。 我想使用Docker作为容器,因为它允许我在同一容器中运行多个互连的服务器进程,其中一些需要多个端口(例如RTSP)。对于这种应用程序,是否有任何变通办法,例如RT

  • 问题内容: 因此,我们大多数人都知道 如何 从内部类访问外部类。用这些词进行搜索会给出关于该主题的大量回答问题。但是我想知道的是为什么语法是这样。 例: 为什么呢?看起来是A类的静态字段,但是… 感到困惑 如果这是重复的话,请原谅我。就像我说的那样,用这些词进行搜索会给出操作答案。 问题答案: 为什么这样做呢?真的,只是因为它的方式。它行之有效,从某种意义上讲,并且不需要花哨的语法来完成这项工作。