我正在运行以下2个本地linux docker容器,其中具有.net core 3.1 Web API,并且所有属性在下面看起来都相似。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07b119884a5a servicetwo:dev "tail -f /dev/null" 4 minutes ago Up 4 minutes 0.0.0.0:32770->80/tcp ServiceTwo_1
e54497742108 servicetwo:dev "tail -f /dev/null" 16 minutes ago Up 16 minutes 0.0.0.0:32769->80/tcp ServiceTwo
容器ServiceTwo_1已由Visual Studio通过单击其中的docker debug按钮创建。可以通过http://localhost:32770/api/weatherforecast/weather在浏览器中加载。
但是容器“ ServiceTwo”是使用Visual Studio使用的相同命令手动创建的,如下所示。
docker run -dt -v "C:\Users\jaish\vsdbg\vs2017u5:/remote_debugger:rw" -v "C:\Users\jaish\source\repos\ServiceTwo\ServiceTwo:/app" -v "C:\Users\jaish\source\repos\ServiceTwo:/src" -v "C:\Users\jaish\.nuget\packages\:/root/.nuget/fallbackpackages2" -v "C:\Program Files\dotnet\sdk\NuGetFallbackFolder:/root/.nuget/fallbackpackages" -e "DOTNET_USE_POLLING_FILE_WATCHER=1" -e "ASPNETCORE_ENVIRONMENT=Development" -e "NUGET_PACKAGES=/root/.nuget/fallbackpackages2" -e "NUGET_FALLBACK_PACKAGES=/root/.nuget/fallbackpackages;/root/.nuget/fallbackpackages2" -P --name ServiceTwo --entrypoint tail servicetwo:dev -f /dev/null
但是此容器无法使用其端口(即http://localhost:32769/api/weatherforecast/weather
)加载到浏览器中我错过了手动操作的任何步骤吗?
答案 0 :(得分:0)
看起来您的端口映射可能是一个问题
0.0.0.0:32770->80/tcp ServiceTwo_1
0.0.0.0:32769->80/tcp ServiceTwo
检查运行这些查询后得到的结果
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b650456536c7 busybox:latest top 54 minutes ago Up 54 minutes 0.0.0.0:1234->9876/tcp, 0.0.0.0:4321->7890/tcp test
$ docker port test
7890/tcp -> 0.0.0.0:4321
9876/tcp -> 0.0.0.0:1234
$ docker port test 7890/tcp
0.0.0.0:4321
$ docker port test 7890/udp
2014/06/24 11:53:36 Error: No public port '7890/udp' published for test
$ docker port test 7890
0.0.0.0:4321
参考:https://docs.docker.com/engine/reference/commandline/port/