如何在 Docker 中列出图像?

Docker 提供了大量有用的 Docker 命令,可以帮助您创建、操作和管理 Docker 对象,例如卷、图像、容器、网络等。 如果您已经使用 Docker 很长时间,您可能有几个Docker 映像已经在您的机器中。跟踪所有这些图像变得非常困难,尤其是通过单个命令行。

但是,您可以列出所有 Docker 镜像以及过滤后的输出以获得您想要的结果。在本文中,我们将讨论如何使用不同的命令和多个选项来列出主机中的所有 Docker 镜像。

列出 Docker 镜像

有两个主要命令可以互换使用来列出 Docker 映像,并且它们都提供相同的结果。下面提到了这两个命令的语法。

$ docker image ls [OPTIONS] [REPOSITORY[:TAG]]

您可以将多个选项与此命令一起使用。这些是 -

  • --digests - 用于打印图像的摘要。

  • --filter - 您可以使用此选项来过滤您的输出。

  • --format - 您可以使用 Go 模板漂亮地打印输出。

  • --no-trunc - 您可以使用它来避免输出截断。

  • --quiet - 仅显示图像的 ID。

  • --all - 您可以使用此选项列出中间图像。

实现相同结果的另一个命令是 -

$ docker images

让我们讨论几个示例来修改您的结果输出。

如果只想列出属于特定存储库的那些图像,可以使用以下命令。

$ docker images <repository-name>:<tag-name>

For example, if you want to list all the nginx images, you can use the following command.

$ docker images nginx

您还可以提供标签名称以及映像存储库的名称。

$ docker images nginx:latest

仔细看结果,会发现Docker images list命令是通过截取镜像的ID来显示镜像列表的。如果要覆盖此默认行为,可以使用 --no-trunc 选项。让我们看看如何做到这一点。

$ docker images --no-trunc

如果您还想列出镜像的摘要,您可以简单地将 --digests 选项与 Docker 镜像命令一起使用。图像摘要是赋予每个标记图像的唯一 ID,通常用于检查相似图像。

$ docker images --digests

如果要列出所有悬空或未标记的图像,可以使用 --filter 选项来执行此操作。您需要提供适当的键值对。您可以提供的一些过滤器示例是 - 标签、悬空、之前、之后和参考。让我们看看如何列出所有悬空图像。

$ docker images --filter "dangling=true"

如果要过滤在特定图像之前创建的所有图像,可以使用 before 过滤器。

$ docker images --filter "before=fedora"

上面的命令将显示在您的主机中的 fedora 镜像之前创建的所有镜像的列表。要列出在特定图像之后创建的图像,您可以使用自过滤器。

$ docker images --filter "since=fedora"

您还可以使用参考选项列出与特定模式匹配的图像。例如,如果要列出所有以字母 m 开头的图像,可以使用以下命令。

$ docker images --filter=reference='m*'

要列出所有图像,包括中间图像和悬垂图像,您可以使用 --all 选项。

$ docker images --all

如果只想打印图像的 ID,可以使用 --quiet 选项。

$ docker images --quiet

您还可以使用 --format 选项使用 Go 模板漂亮地打印输出。让我们看看如何做到这一点。

$ docker images --format "The Image ID for the image is {{.ID}} belonging to {{.Repository}}"

您可以使用的其他占位符包括标签、ID、摘要、大小、createdat、createdsince 等。

最后的想法!

总而言之,在本文中,我们讨论了如何使用两个不同的命令来列出主机中的所有 Docker 镜像。我们看到了如何根据我们的要求使用几种不同的选项来格式化输出。我们查看了多个选项,例如 quiet、all、digest、format、filter 等。我们当然希望您现在能够以最精确的方式使用 Docker 镜像列表命令来获得准确的结果。