代码之家  ›  专栏  ›  技术社区  ›  Michel

dotnet核心docker容器-无法绑定到https://localhost:5001在IPv6环回接口上

  •  0
  • Michel  · 技术社区  · 7 年前

    我为.NET core创建了一个映像:

    FROM microsoft/dotnet:2.1-sdk AS build-env
    WORKDIR /app
    
    EXPOSE 80 443 5000 5001 5010 5011 7000 22676
    
    #ENTRYPOINT [ "bash"]
    CMD ["bash"]
    

    我从中取出一个容器 docker container run -it --publish 5000:8018 --name versie3001 -v //c/tijd/mount:/app michel03

    顺利的是我看到了挂载的文件。 dotnet new razor 我和你一起跑 dotnet run

    warn: Microsoft.AspNetCore.Server.Kestrel[0]
          Unable to bind to https://localhost:5001 on the IPv6 loopback interface: 'Cannot assign requested address'.
    warn: Microsoft.AspNetCore.Server.Kestrel[0]
          Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Cannot assign requested address'.
    

    实际上它说警告,但结果是一样的,当我去localhost:8018 I 没有结果( ERR_CONNECTION_REFUSED )

    我做错什么了?

    我看到一个答案说我应该在我的容器文件中这样做: ENTRYPOINT [ "dotnet", "watch", "run", "--no-restore", "--urls", "https://0.0.0.0:5000"] . 它没有给我错误(输出是 Now listening on: https://0.0.0.0:5000 https://localhost:8018 在我的本地机器上。

    1 回复  |  直到 7 年前
        1
  •  2
  •   David Maze    7 年前

    你的 --publish 选项是向后的:它是 -p <hostPort>:<containerPort> ,所以对于您的设置 --publish 8018:5000 .

    撇开启动问题不谈,您确实需要使容器侦听0.0.0.0(或者::0,如果IPv6工作的话)的选项。如果它绑定到localhost,那么从它的容器外部(包括从其他容器和主机)将无法访问它。