Visual Studio Dockerfile EntryPoint覆盖解释了吗?

时间:2018-09-09 18:51:44

标签: docker asp.net-core .net-core dockerfile

我是Docker的新手,试图理解它,但是我注意到Visual Studio在幕后做了很多“魔术”。我设法弄清了所有有关VS在调试带有Docker支持的ASP.NET Core应用程序时使用的docker run命令的问题。

docker run 
-dt 
-v "C:\Users\jnhaf\vsdbg\vs2017u5:/remote_debugger:rw" 
-v "D:\ProtoTypes\WebAppDockerOrNot\WebAppDockerOrNot:/app" 
-v "C:\Users\jnhaf\AppData\Roaming\ASP.NET\Https:/root/.aspnet/https:ro" 
-v "C:\Users\jnhaf\AppData\Roaming\Microsoft\UserSecrets:/root/.microsoft/usersecrets:ro" 
-v "C:\Users\jnhaf\.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 "ASPNETCORE_URLS=https://+:443;http://+:80" 
-e "ASPNETCORE_HTTPS_PORT=44328" 
-e "NUGET_PACKAGES=/root/.nuget/fallbackpackages2" 
-e "NUGET_FALLBACK_PACKAGES=/root/.nuget/fallbackpackages;/root/.nuget/fallbackpackages2" 
-p 4800:80 
-p 44328:443 
--entrypoint tail webappdockerornot:dev -f /dev/null

最后一个论点--entrypoint tail webappdockerornot:dev -f /dev/null使我感到困惑。我知道VS覆盖了Dockerfile中的入口点设置,但是我不了解也无法在线找到的是tail webappdockerornot:dev-f /dev/null。我发现webappdockerornot:dev是docker映像,但有人可以解释此参数的工作原理或提供解释该参数的链接。

1 个答案:

答案 0 :(得分:1)

我们可以将该命令行的分解方式与

docker run \
  ... some other arguments ... \
  --entrypoint tail \
  webappdockerornot:dev \
  -f /dev/null

并将其与常规形式匹配

docker run [OPTIONS] [IMAGENAME:TAG] [CMD]

因此,--entrypoint tail选项将入口点设置为tail,“命令”部分为-f /dev/null。 Docker实际启动容器时,它将命令作为附加参数传递给入口点。最后,它的最终效果是

  

忽略Dockerfile所说的操作;设置容器运行时环境后,请改为运行tail -f /dev/null

反过来又是启动容器的一种常用方法,该容器不执行任何操作但仍保持运行。然后,您可以使用docker exec和类似的面向调试的工具在容器内进行操作。