什么是在Visual Studio 2019中使用docker run entrypoint的tail命令?

7
我正在运行Windows 10专业版,已安装Docker和Linux容器。
使用Visual Studio 2019,我创建了一个基本的.NET Core Web API应用程序,并启用了Docker支持(Linux)。
我构建了解决方案,在输出窗口(查看-> 输出或Ctrl + Alt + O)中,我选择“容器工具”在“显示输出来源”下拉菜单中。向下滚动直到末尾(请参见下面图像中的滚动条),您将看到指向Docker Run命令的入口点选项,如下所示。
--entrypoint tail webapp:dev -f /dev/null

您参考的完整Docker运行命令如下所示。
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 

我想问的是“tail”是什么。我看到了两个stackoverflow问题(这个这个),但是没有得到很多信息。同时从这里可以看出,tail是一个Linux命令(我正在运行一个Linux容器),但它在这里有什么作用呢?

请解惑。

enter image description here


这里的作用是什么?你是指在容器中还是一般情况下tail -f /dev/null命令的作用是什么? - vijay v
1
在容器中,它的目的是什么? - VivekDev
1个回答

10

Entrypoint是要执行的二进制文件。
例如: --entrypoint=bash --entrypoint=helm之类的语句。
tail是一个Linux实用程序,用于将文件或默认情况下的标准输入内容显示到标准输出/dev/null中。
/dev/null会将命令的标准输出重定向到null设备,这是一种特殊设备,它会丢弃写入其中的信息。因此,当您在终端中运行tail -f /dev/null时,它不会打印任何内容。

如果您想让容器在分离模式下运行,则需要在前台运行某些内容。一种简单的方法是将/dev/null设备作为Docker镜像的CMDENTRYPOINT命令来tail


你的意思是说它和命令docker run --rm -it webapp:dev中的“-it”是一样的吗? - VivekDev
当你在命令的结尾处提到可执行文件时,-it会直接将你带入容器内部。例如,docker run -it --rm nginx:stable bash会让我进入一个bash tty以便与容器进行交互。在你的docker run命令中,你可以使用-d选项来保持它在分离模式下运行。将entrypoint设置为tail -f /dev/null不会关闭容器。 - vijay v
那么,我们该如何让它不包含这个?-- 它会使我的容器无限期地保持活动状态,即使服务的进程已经结束了。 - BrainSlugs83
请清楚地解释您的问题或编写一个新的查询。@BrainSlugs83 - vijay v

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接