如何使docker容器ls -f名称按名称过滤?

Ann*_*aus 9 docker

docker container ls -f name=foo返回名称包含foo的所有容器.这意味着它还返回一个名为的容器foobar.如何过滤所有名为foo的容器?

Ann*_*aus 10

docker container ls -f name=^/foo$
Run Code Online (Sandbox Code Playgroud)

它可以通过使用正则表达式来实现.插入符号^与名称的确切开头$匹配,美元与结尾匹配.

斜杠/是必需的,因为过滤器机制期望名称以斜杠为前缀.


BMi*_*tch 6

只有一个容器的名称恰好是“ foo”,因此请使用:

$ docker container inspect foo
Run Code Online (Sandbox Code Playgroud)

相反,您可以格式化输出以从中获取所需的任何数据。例如显示当前状态和图像:

$ docker container inspect foo -f '{{.State.Status}} {{.Config.Image}}'
running foo_image:latest
Run Code Online (Sandbox Code Playgroud)

从注释中查看容器“ foo”是否存在,可以使用:

if docker container inspect foo >/dev/null 2>&1; then
  echo "container exists"
else
  echo "container does not exit"
fi
Run Code Online (Sandbox Code Playgroud)

  • 当容器存在时,这是一个好主意,以我为例,我试图找出容器是否存在。 (2认同)
  • 如果不存在,则检查的返回代码不为零。你可以用 if 来捕捉它。 (2认同)