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

文章目录

1.速查表

1.1. 查看 Docker 容器列表

1.2. 过滤 Docker

2.列出 Docker 容器

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

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

2.3. 仅列出容器 ID

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

3. 过滤 Docker 容器

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

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

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

5.结论

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

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

1.速查表

1.1. 查看 Docker 容器列表

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

命令

描述

docker container ls

列出所有正在运行的容器。

docker ps

docker container ls -a

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

docker ps -a

docker container ls -n

列出最后的 个容器。

docker container ls --latest

列出最新的容器(与 -n 1 相同)。

docker container ls --no-trunc

列出在禁用列值截断后的容器。

docker container ls --size

列出容器的大小。

docker container ls --format ""

使用 Go 模板自定义容器列表输出。

docker container ls --format "table {{.ID}}\t{{.Image}}\t{{.Status}}"

以表格格式列出容器。

1.2. 过滤 Docker

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

命令

描述

docker container ls --filter "status="

列出具有特定状态的容器(例如“exited”)。

docker container ls --filter "name="

列出具有特定名称的容器。

docker container ls --filter "ancestor="

列出派生自特定镜像的容器。

docker container ls --filter "before="

列出在特定容器之前创建的容器。

docker container ls --filter "since="

列出在特定容器之后创建的容器。

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 标志。

$ 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

如果我们想选择多个状态,那么我们应该传递多个 –filter 选项。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)

再也不用跑复印店了,教你如何正确打印标准尺寸的身份证复印件
【围巾什么材质舒服】什么材质的围巾好 围巾选购攻略分享