【问题标题】:What is tail command with docker run entrypoint in visual studio 2019?Visual Studio 2019 中带有 docker run 入口点的 tail 命令是什么?
【发布时间】:2020-07-09 16:05:22
【问题描述】:

我正在运行 Windows 10 pro,安装了 docker 和 linux 容器。

使用 Visual Studio 2019,我创建了一个基本的 .net core web api 应用程序,并启用了 docker support(linux)。

我构建了解决方案,并在输出窗口(查看 -> 输出或 Ctrl + Alt + O)中选择了“显示输出自”下拉菜单中的“容器工具”。滚动到最后(见下图中的滚动条) 您会看到 docker run 命令的入口点选项,如下所示。

--entrypoint tail webapp:dev -f /dev/null

您的 ref 的整个 docker run 命令如下。

docker run -dt -v "C:\Users\MyUserName\vsdbg\vs2017u5:/remote_debugger:rw" -v "D:\Trials\Docker\VsDocker\src\WebApp:/app" -v "D:\Trials\Docker\VsDocker\src:/src" -v "C:\Users\UserName\.nuget\packages\:/root/.nuget/fallbackpackages" -e "DOTNET_USE_POLLING_FILE_WATCHER=1" -e "ASPNETCORE_ENVIRONMENT=Development" -e "NUGET_PACKAGES=/root/.nuget/fallbackpackages" -e "NUGET_FALLBACK_PACKAGES=/root/.nuget/fallbackpackages" -P --name WebApp --entrypoint tail webapp:dev -f /dev/null 

所以我的问题是这个“尾巴”是什么。我看到了两个这样的问题(thisthis),但没有得到太多。同样来自here,tail 似乎是一个 linux 命令(我正在运行一个 linux 容器),但它在这里做什么?

请赐教。

【问题讨论】:

  • 它在这里做什么?您的意思是在容器中还是一般命令 tail -f /dev/null 的作用?
  • 在容器中它的目的是什么

标签: docker visual-studio-2019


【解决方案1】:

入口点是正在执行的二进制文件。
示例:--entrypoint=bash--entrypoint=helm 像这样。
tail linux 实用程序将文件的内容或其标准输入显示到标准输出 /dev/null
/dev/null 将命令标准输出重定向到空设备,这是一个特殊的设备丢弃写入它的信息。因此,当您在终端中运行 tail -f /dev/null 时,它不会打印任何内容。

如果你想让你的容器在分离模式下运行,你需要在前台运行一些东西。一个简单的方法是将tail /dev/null 设备作为您的Docker 映像的CMDENTRYPOINT 命令。

【讨论】:

  • 你的意思是说它和'-it'一样,在命令 docker run --rm -it webapp:dev
  • -it 仅当您在命令末尾提及可执行文件时才会直接带您进入容器。就像docker run -it --rm nginx:stable bash 让我使用 bash tty 与容器进行进一步交互。在您的 docker run 命令中,您说它使用 -d 选项继续以分离模式运行。拥有tail -f /dev/null 的入口点不会关闭容器。
  • 那么,我们如何让它不包括这个呢? -- 它使我的容器无限期地保持活动状态,即使在服务进程结束之后也是如此。
  • 请清楚地解释您的问题或写一个新的查询。 @BrainSlugs83
猜你喜欢
  • 2021-10-09
  • 2020-01-23
  • 2021-02-04
  • 1970-01-01
  • 2019-06-07
  • 1970-01-01
  • 2019-01-03
  • 1970-01-01
  • 2019-07-29
相关资源
最近更新 更多