docker中的aspnetcore:windows和linux容器的不同行为

我使用最后的DockerMSVS 2017Windows 10 Professional上工作。 我使用默认模板创build了简单的web api应用程序,并仅更改了BuildWebHost方法:

 public static IWebHost BuildWebHost(string[] args) => new WebHostBuilder() .UseKestrel() .UseStartup<Startup>() .Build(); 

然后发表它:

 dotnet publish -c Release 

然后我设置位置在PowerShell中发布文件夹,并运行docker图像(目前在Windows模式下的docker):

 docker run --rm -it -v ${PWD}:C:/api -p 6722:80 microsoft/aspnetcore:2 

在容器cmd中

 cd api dotnet mywebapi.dll 

结果: http://localhost:6722/api/values不起作用, http://172.30.163.123/api/values http://localhost:6722/api/values起作用。

然后我打开docker linux模式并运行这个模式:

 docker run --rm -it -v ${PWD}:/api -p 6722:80 microsoft/aspnetcore:2 

在容器bash中:

 cd api dotnet mywebapi.dll 

结果: http://localhost:6722/api/values有效, http://172.17.0.2/api/values http://localhost:6722/api/values不起作用。

我使用docker inspect来获取容器的ip地址。

为什么在Windows容器的情况下WebAPI只能在容器的IP地址? 为什么在Linux容器的情况下,webapi只能在localhost +端口上使用?

UPD_1:我看到有一个问题的Windows容器https://github.com/docker/for-win/issues/458