Fiz dois containers com base nas seguintes imagens:
ASP.NET Núcleo
mcr.microsoft.com/dotnet/aspnet:8.0.0-windowsservercore-ltsc2019
ASP.NET
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2016
Eu executo os dois contêineres da seguinte maneira:
docker run -d -p 8080:8080 aspcore
docker run -d -p 9090:9090 asp
O contêiner ASP.NET Core é executado na porta 8080 e posso abri-lo no navegador, http://localhost:8080
mas o contêiner ASP.NET não funcionahttp://localhost:9090
docker ps -a
mostra que o núcleo do ASP.NET está sendo executado 0.0.0.0:8080->8080/tcp
enquanto o ASP.NET está sendo executado80/tcp, 0.0.0.0:9090->9090/tcp
O que significa que o ASP.NET só é acessível através de algum IP na porta 80, por exemplo http://172.20.235.45/
. Este IP é do adaptador virtual Hyper-V.
Mesmo se eu construir essa imagem EXPOSE 9090
, seu comportamento ainda será o mesmo.
Resumindo, o contêiner ASP.NET Core funciona nos dois sentidos:
http://localhost:8080
http://172.20.235.46:8080
Mas o contêiner ASP.NET só é acessível como:
http://172.20.235.45/
Por que está se comportando assim? É por causa da forma como sua imagem base é construída pela Microsoft?