跳到主要内容

Podman rm - 移除一个或多个容器

摘要

podman rm [选项] 容器

podman container rm [选项] 容器

描述

podman rm 命令用于从主机上移除一个或多个容器。可以使用容器的名称或ID进行指定。此命令并不会移除镜像。 正在运行或无法使用的容器在没有使用 -f 选项的情况下不会被移除。

选项

以下是有效的过滤器列表及其详细说明:

过滤器描述
id[ID] 容器的ID(默认进行CID前缀匹配;接受正则表达式)
name[Name] 容器的名称(接受正则表达式)
label[Key][Key=Value] 分配给容器的标签
exited[Int] 容器的退出代码
status[Status] 容器的状态:'created'(已创建)、'exited'(已退出)、'paused'(已暂停)、'running'(运行中)、'unknown'(未知)
ancestor[ImageName] 用于创建容器的镜像或其子代
before[ID][Name] 在此容器之前创建的容器
since[ID][Name] 在此容器之后创建的容器
volume[VolumeName][MountpointDestination] 在容器中挂载的卷
health[Status] 健康或不健康
pod[Pod] pod的名称或完整或部分ID
network[Network] 网络的名称或完整ID
until[DateTime] 在给定持续时间或时间之前创建的容器。

这些过滤器可以帮助用户更加精确地选择和管理容器。通过指定不同的过滤条件,用户能够定位并操作满足特定条件的容器集合,从而提高容器管理的效率和准确性。

--all, -a

移除所有容器。可以与 -f 选项结合使用。

--cidfile.read

当指定的文件不存在时,如果用户指定了 --ignore,则命令不会失败。

--depend

移除指定的容器,并递归地移除所有依赖于它的容器。

--filter=filter

对要移除的容器进行过滤。 可以多次使用 --filter 标志来指定多个过滤器。 具有相同键的过滤器以包含方式工作,唯一的例外是 label,它以排除方式工作。具有不同键的过滤器始终以排除方式工作。

过滤器的键值

  • ancestor=(image-name[:tag]|image id|@image digest) 只移除那些由指定的镜像生成的容器。

  • before=(container[:container...]) 只移除那些在给定的容器之前创建的容器。

  • created=(timestamp) 只移除那些在给定的时间戳之后创建的容器。

  • exited=(int) 只移除那些退出码与指定值相匹配的容器。

  • health=(healthy|unhealthy|starting) 只移除那些健康状态与指定值相匹配的容器。

  • id=(container-id) 只移除具有指定ID的容器。

  • label=(key|key=value) 只移除具有指定标签的容器。

  • name=(name) 只移除具有指定名称的容器。

  • prune 删除所有未运行的容器。

  • status=(created|restarting|running|paused|exited|dead) 只移除具有指定状态的容器。

--force, -f

强制移除一个或多个正在运行或无法使用的容器。

--help

显示帮助信息。

--ignore

当遇到错误时,不停止处理,并继续移除其他容器。

--volume

在移除容器时,同时移除与该容器关联的匿名卷。

-q, --quiet

静默模式,只显示容器ID。

示例

移除指定容器

podman rm mycontainer

强制移除正在运行的容器

podman rm -f myrunningcontainer

移除所有容器

podman rm -a

使用过滤器移除容器

podman rm --filter exited=0

这条命令将移除所有退出码为0的容器。

移除容器及其关联的匿名卷

podman rm --volume mycontainer

静默模式移除容器

podman rm -q mycontainer

这条命令将只输出被移除容器的ID,而不会显示其他信息。

返回值

命令执行成功时返回0,否则返回非0值。

注意事项

  • 在移除容器之前,请确保不再需要容器内的数据,因为一旦容器被移除,其内部的数据也将被删除。
  • 如果容器正在运行,需要使用 -f 选项来强制移除。
  • 使用 --volume 选项时,将同时删除与容器关联的匿名卷,但不会删除命名卷。

--force, -f

强制移除正在运行和暂停的容器。强制移除容器也会从容器存储中移除容器,即使该容器不为 Podman 所知。例如,由不同容器引擎(如 Buildah)创建的容器。此外,强制移除可以用于移除无法使用的容器,例如其 OCI 运行时不可用的容器。

--ignore

当指定的 --cidfile 不存在时忽略,因为容器可能已经被移除。

--latest

(此选项不适用于远程 Podman 客户端,包括 Mac 和 Windows(不包括 WSL2)机器)

--time

要使用 --time 选项,必须指定 --force 选项。

--volumes, -v

移除与容器关联的匿名卷。这不包括使用 podman volume createpodman runpodman create--volume 选项创建的命名卷。

示例

移除具有给定名称的容器:

$ podman rm mywebserver

移除具有给定名称的容器以及所有依赖它的容器:

$ podman rm --depend mywebserver

移除具有给定名称或 ID 的多个容器:

$ podman rm mywebserver myflaskserver 860a4b23

从文件中读取 ID 来移除多个容器:

$ podman rm --cidfile ./cidfile-1 --cidfile /home/user/cidfile-2

强制移除具有给定 ID 的容器:

$ podman rm -f 860a4b23

移除所有容器,无论其运行状态如何:

$ podman rm -f -a

强制移除最后创建的容器。(此选项不适用于远程 Podman 客户端,包括 Mac 和 Windows(不包括 WSL2)机器):

$ podman rm -f --latest

退出状态

0 所有指定的容器已移除

1 其中一个指定的容器不存在,且没有其他失败

2 其中一个指定的容器处于暂停或运行状态

125 命令因其他原因失败

另请参阅

历史

2017 年 8 月,最初由Ryan Cole编译