Docker容器没有';我不回应请求

Docker容器没有';我不回应请求,docker,docker-compose,dockerfile,docker-machine,Docker,Docker Compose,Dockerfile,Docker Machine,我在docker容器中有.net后端,端口为-p 5001:5001 我发出localhost curl请求并得到“curl:(52)来自服务器的空回复” 但如果没有docker后端,则可以使用相同的端口正常工作 我的dockerfile: FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-bionic AS base WORKDIR /app EXPOSE 5001 FROM mcr.microsoft.com/dotnet/core/sdk:3.1

我在docker容器中有.net后端,端口为-p 5001:5001 我发出localhost curl请求并得到“curl:(52)来自服务器的空回复”

但如果没有docker后端,则可以使用相同的端口正常工作

我的dockerfile:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-bionic AS base
WORKDIR /app
EXPOSE 5001
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS publish
WORKDIR /
COPY  ./ ./
WORKDIR /Somedir
RUN dotnet publish "Somedir.csproj" -c Debug -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Somedir.dll"]

最有可能的是,容器中的.NET api实际上正在侦听端口80和443。启动设置实际上不会更改容器的启动。尝试将端口更改为-p 5001:443

谢谢!但是为什么docker在《docker ps》5001:5001中给我看呢?简单的答案是:你告诉过我的。当您使用-p 5001:5001启动容器时,docker使用链接的端口启动容器。所以docker ps向您重复了您要求它做的事情。我认为这是一个很好的人机对抗的例子,在这个例子中,人有一个意图,机器完全按照你告诉它的去做,所以在这种情况下,我只能在程序参数中改变监听端口?不在docker中?是和否。只能在程序中更改程序的侦听端口。容器的侦听端口在docker中设置。把docker想象成自己的计算机,具有向前移植的能力。当docker在端口5001(左边的条目)接收到信息时,您必须告诉它去哪里,也就是443(右边的条目)。所以你可以告诉docker把它转发到你想要的任何地方,但是你的程序只听80和443。