Docker容器查看和过滤指令详解及示例

后端 潘老师 7个月前 (10-14) 278 ℃ (0) 扫码查看

Docker 是一个出色的工具,用于管理容器,提供了轻松的命令来与正在运行或已停止的容器进行交互。本文将帮助初学者熟悉列出和过滤 Docker 容器的操作。

容器是一个自包含的执行环境,共享主机系统的内核,并(可选地)与系统中的其他容器隔离开。

1.速查表

1.1. 查看 Docker 容器列表

以下是列出 Docker 容器的速查表:

命令 描述
docker container ls 列出所有正在运行的容器。
docker ps
docker container ls -a 列出所有容器(包括已停止的容器)。
docker ps -a
docker container ls -n <number> 列出最后的 <number> 个容器。
docker container ls --latest 列出最新的容器(与 -n 1 相同)。
docker container ls --no-trunc 列出在禁用列值截断后的容器。
docker container ls --size 列出容器的大小。
docker container ls --format "<format>" 使用 Go 模板自定义容器列表输出。
docker container ls --format "table {{.ID}}\t{{.Image}}\t{{.Status}}" 以表格格式列出容器。

1.2. 过滤 Docker

容器 以下是过滤 Docker 容器的速查表:

命令 描述
docker container ls --filter "status=<status>" 列出具有特定状态的容器(例如“exited”)。
docker container ls --filter "name=<name>" 列出具有特定名称的容器。
docker container ls --filter "ancestor=<image-name>" 列出派生自特定镜像的容器。
docker container ls --filter "before=<container-name>" 列出在特定容器之前创建的容器。
docker container ls --filter "since=<container-name>" 列出在特定容器之后创建的容器。
docker container ls --filter "status=exited" --filter "status=paused" 使用多个 –filter 标志组合筛选条件。

要了解这些命令以及它们的示例输出的更详细信息,请继续阅读本文。

2.列出 Docker 容器

Docker 有两组命令,“docker container ls” 和 “docker ps”,它们在本质上用于列出 Docker 容器,存在这两种指令是出于历史原因。

“docker container ls” 是在 Docker 1.13 中引入的,它是现代化且更结构化的 Docker CLI 的一部分。它遵循了使用 docker container 命名空间进行容器相关操作的惯例。

“docker container ls” 提供了额外的选项,用于自定义输出格式、过滤容器以及更高级的功能,因此建议在现代 Docker 环境中使用它。

2.1. 仅列出正在运行的容器

随着时间的推移,我们会不断运行容器,系统中会积累很多容器。要查找当前在主机上运行的容器,可以使用“container ls”命令,如下所示:

$ docker container ls
CONTAINER ID   IMAGE                              COMMAND                  CREATED         STATUS         PORTS                                         NAMES
56630ce85fd1   confluentinc/cp-kafka:latest       "/etc/confluent/dock…"   2 minutes ago   Up 2 minutes   0.0.0.0:9092->9092/tcp                        broker
909751e3bb4b   confluentinc/cp-zookeeper:latest   "/etc/confluent/dock…"   2 minutes ago   Up 2 minutes   2888/tcp, 3888/tcp, 0.0.0.0:22181->2181/tcp   zookeeper

此命令将列出所有当前正在运行的容器。

默认情况下,Docker 输出七列,含义如下:

列名 描述
CONTAINER ID 容器的唯一标识符。
IMAGE 容器镜像名称及其标签,由冒号分隔。
COMMAND 运行容器的命令。
CREATED 容器创建时间戳。
STATUS 容器状态。
PORTS 主机机器与容器之间的端口映射。
NAMES Docker 容器的人类可读名称。

2.2. 列出所有容器(包括已停止的)

如果我们不仅想列出当前正在运行的容器,还想列出系统中定义的所有容器,那么我们可以使用 -a 或 –all 命令行参数,如下所示。

请注意,redis 容器处于已退出状态。

$ docker container ls --all
CONTAINER ID   IMAGE                              COMMAND                  CREATED         STATUS                     PORTS
        NAMES
df08118023d0   redis                              "docker-entrypoint.s…"   3 minutes ago   Exited (0) 2 minutes ago
        spring-boot-docker-compose-redis-1
56630ce85fd1   confluentinc/cp-kafka:latest       "/etc/confluent/dock…"   3 minutes ago   Up 3 minutes               0.0.0.0:9092->9092/tcp
        broker
909751e3bb4b   confluentinc/cp-zookeeper:latest   "/etc/confluent/dock…"   3 minutes ago   Up 3 minutes               2888/tcp, 3888/tcp, 0.0.0.0:22181->2181/tcp   zookeeper

这将列出处于任何状态的容器,例如已创建、正在运行或已退出。

2.3. 仅列出容器 ID

有时,以完整信息列出容器可能会让人不知所措。 “container ls” 命令允许使用标志来限制命令输出中的信息。

例如,-q 或 –quiet 标志列出所有容器的 ID。

$ docker container ls --quiet
56630ce85fd1
909751e3bb4b

上述命令输出了经过修剪的容器 ID。如果我们想列出完整的容器 ID,可以使用以下命令:

$ docker container ls --no-trunc
56630ce85fd1758520522cde1e81a7168e41eb1b5582c92b41cd026405b3f599
909751e3bb4ba908cca32e86a92d61a47047830bfade87dda2408fadf5f98513

这对于强制删除系统中当前定义的所有容器,包括已停止的容器,可能非常有用。

$ docker container rm --force $(docker container ls --all --quiet)

2.4. 限制输出中的容器数量

如果我们只想列出最近使用的容器,而不是浏览旧容器和新容器的混合列表,可以使用 -n <number> 标志。

$ docker container ls -n 2

这将列出最近使用的 4 个容器。如果只想显示最新的容器,则使用 –latest 标志。

$ docker container ls --latest

3. 过滤 Docker 容器

大多数情况下,我们不关心所有容器的列表。我们只想根据某些条件看到有限数量的容器。让我们探讨一下我们有哪些选项。

3.1. 根据特定状态过滤容器

“docker container ls” 命令提供的不仅仅是列出运行或已停止的容器。我们可以根据几乎任何状态使用 -f 或 –filter 标志来列出容器。

Docker 容器可以处于以下状态:created、restarting、running、removing、paused、exited 或 dead。

以下命令筛选具有已退出状态的容器。

$ docker container ls --filter "status=exited"
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                     PORTS     NAMES
df08118023d0   redis     "docker-entrypoint.s…"   5 minutes ago   Exited (0) 5 minutes ago             spring-boot-docker-compose-redis-1

如果我们想选择多个状态,那么我们应该传递多个 <code>–filter</code> 选项。Docker 将列出与至少一个筛选条件匹配的容器。

$ docker container ls --filter "status=exited" --filter "status=paused"

3.2. 根据容器/镜像名称过滤容器

如果我们不确定要搜索的容器的其他属性,那么可以尝试按名称进行筛选。名称可以是部分名称或完整名称,都可以起作用。

$ docker container ls --filter "name=redis"

此命令将仅列出具有名称“mysql”的容器。这在运行多个容器并希望快速查找和检查具有特定名称的容器时非常有用。

如果我们甚至知道基本镜像名称的名称,那么名称筛选将起作用。

$ docker container ls --filter "ancestor=mysql"

在上述命令之后,Docker 将仅列出从名为“mysql”的基本镜像创建的容器。这个命令在想要查看所有派生自特定基本镜像的容器时非常有用。

4.自定义输出的高级定制

Docker 允许您以适合特定需求的方式自定义容器列表的输出。这是通过使用 Go 模板实现的。

例如,如果我们只想显示容器 ID、镜像和状态,那么可以运行以下命令。

docker container ls --format "{{.ID}} {{.Image}} {{.Status}}"
56630ce85fd1 confluentinc/cp-kafka:latest Up 7 minutes
909751e3bb4b confluentinc/cp-zookeeper:latest Up 7 minutes

如果我们想要以表格布局格式化输出,然后使用所需的列名前缀 “table”。

docker container ls --format "table {{.ID}}\t{{.Image}}\t{{.Status}}"
CONTAINER ID   IMAGE                              STATUS
56630ce85fd1   confluentinc/cp-kafka:latest       Up 7 minutes
909751e3bb4b   confluentinc/cp-zookeeper:latest   Up 7 minutes

参考以下字段可用于模板字符串:

  • .ID – 容器 ID
  • .Image – 镜像名称和标签
  • .Command – 负责运行此容器的命令
  • .CreatedAt – 容器创建时间
  • .Running – 容器启动后的经过时间
  • .Ports – 端口映射
  • .Status – 容器执行状态
  • .Size – 容器及其镜像的磁盘大小
  • .Names – 容器名称
  • .Labels – 分配给容器的所有标签
  • .Mounts – 容器的卷
  • .Networks – 附加到容器的所有网络名称

5.结论

本 Docker 教程提供了如何使用各种命令和选项查看和过滤 Docker 容器的全面指南,包括自定义输出格式和根据状态、名称、镜像血统等过滤容器。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/back/9531.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】