TL;DR: 为什么aspnet核心应用程序在Docker镜像中的端口80上运行,但在docker镜像之外运行5000 .
Elaborate
我浏览了这里找到的aspnet核心/ docker教程:https://docs.microsoft.com/en-us/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
等待 . 笏? Why is the aspnet core app running on port 80? 当我直接从机器上运行它时,它在端口5000上运行 . 没有配置文件更改 .
我怀疑它与基本的docker图像有关,但是在docker中还不够熟练以跟踪它 .
1 回答
microsoft/aspnetcore-build
容器构建在microsoft/aspnetcore
容器之上 . dockerhub page for that说:所以这是主动将端口设置为80的容器 . 如果需要,可以通过在_2926596中执行此操作来覆盖它:
此外,值得注意的是,由于您使用的是docker命令,无论是直接运行应用程序还是在容器中运行应用程序,您仍然可以在
http://localhost:5000
访问该应用程序 .