【问题标题】:Docker container doesn't respond to requestsDocker 容器不响应请求
【发布时间】:2020-09-11 14:56:47
【问题描述】:

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

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

我的码头文件:

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"]

【问题讨论】:

    标签: docker docker-compose dockerfile docker-machine


    【解决方案1】:

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

    【讨论】:

    • 谢谢!但是为什么 docker 在 "docker ps" 5001:5001 中显示给我?
    • 简单的答案是:你告诉它的。当您使用 -p 5001:5001 启动容器时,docker 会使用链接的这些端口启动您的容器。所以 docker ps 重复了你要求它做的事情。我认为这是人与机器的一个很好的例子,人有一个意图,机器完全按照你告诉它做的事情去做,哈哈
    • 那么在这种情况下我只能在程序参数中更改监听端口吗?不在码头?
    • 是和不是。您的程序的监听端口只能在您的程序中更改。容器的监听端口在 docker 中设置。将 docker 视为自己的计算机,具有端口转发的能力。当 docker 接收到 5001 端口的信息,左边的入口,你要告诉它去哪里,也就是 443,右边的入口。所以你可以告诉 docker 把它转发到你想要的任何地方,但是你的程序只监听 80 和 443。
    猜你喜欢
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 2019-05-15
    • 2019-12-08
    • 2016-12-27
    • 1970-01-01
    相关资源
    最近更新 更多