为什么某些DockerCLI子命令带有星号?

在 Docker Desktop 中,一些 CLI 子命令带有星号 (*),例如:

$ docker           

Usage:  docker [OPTIONS] COMMAND
(...)
Management Commands:
  builder     Manage builds
  buildx*     Build with BuildKit (Docker Inc., v0.5.1-docker)
  compose*    Docker Compose (Docker Inc., 2.0.0-beta.4)
(...)
  scan*       Docker Scan (Docker Inc., v0.8.0)
(...)

我知道这些是插件(即buildx、compose和scan),但添加星号对我来说毫无意义。

为什么在命令名称中添加星号,添加星号的源代码在哪里?

回答

星号 ( *) 是一个装饰,显示这些子命令是由插件提供的,而不是dockercli 本身的一部分。它帮助用户区分内置和插件子命令。括号中的提供者和插件版本相同,仅针对插件显示。

Asterisk 本身只是“标记”而不是子命令名称的一部分(因此运行buildx命令将只是docker buildx ...)。插件是dockercli 在运行时找到的独立二进制文件,它们的源代码(如果可用)通常位于它们自己的存储库中 - 例如buildx 这里。

docker-ce代码库中用星号装饰所有插件的函数是decoratedName() in components/cli/cli/cobra.go。然后在使用消息模板中使用该函数,该模板在列出所有子命令时呈现。

注意:上面代码库的链接指向docker-ce存储库(Dockercli存储库中的相同功能在这里和模板在这里)。


以上是为什么某些DockerCLI子命令带有星号?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>