我根据下面的图片制作了两个容器:
ASP.NET Core
mcr.microsoft.com/dotnet/aspnet:8.0.0-windowsservercore-ltsc2019
ASP.NET
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2016
我按如下方式运行这两个容器:
docker run -d -p 8080:8080 aspcore
docker run -d -p 9090:9090 asp
ASP.NET核心容器在端口8080上运行,我可以在浏览器http://localhost:8080
中打开它,但ASP.NET容器不能在http://localhost:9090
上运行
docker ps -a
表示ASP.NET核心在0.0.0.0:8080->8080/tcp
上运行,而ASP.NET在80/tcp, 0.0.0.0:9090->9090/tcp
上运行
这意味着ASP.NET只能通过端口80上的某个IP访问,例如http://172.20.235.45/
.此IP属于Hyper-V虚拟适配器.
即使我用EXPOSE 9090
构建这个映像,它的行为仍然是一样的.
In short, ASP.NET Core container works both ways:
http://localhost:8080
http://172.20.235.46:8080
But ASP.NET container is only accessible as:
http://172.20.235.45/
为什么会这样呢?这是因为它的基础形象是由微软构建的吗?