Podman 长期使用后,会累积大量闲置容器。这些容器会持续占用磁盘与内存资源,及时删除可有效清理无用实例、释放系统资源,也能按需重置运行环境。
Podman 删除容器的核心命令为 podman rm,支持单个、多个或全部容器的删除操作,还能强制清理运行中的容器,轻松满足不同场景下的资源清理需求。
podman rm 命令的基本语法如下:
podman rm [选项] 容器ID或名称...
常用选项说明:
-f, --force:强制删除运行中的容器(类似 docker rm -f)。
-l, --link:删除指定的链接(已废弃,建议直接删除容器)。
-v, --volumes:删除容器关联的匿名卷(需注意:命名卷不会被删除)。
-a, --all:删除所有处于停止状态的容器(运行中的容器不会被删除,需配合 -f 强制删除所有容器)。
点击查看 podman rm 命令手册。
没有任何选项的 podman rm 命令只能删除已停止的容器,若容器正在运行,会提示错误(需先停止或强制删除)。例如:
# 删除名为 my-ubuntu 的容器 C:\Users\hxstri> podman rm my-ubuntu my-ubuntu # 删除名为 my-nginx 的容器,由于 my-nginx 容器正在运行,删除失败 C:\Users\hxstri> podman rm my-nginx Error: cannot remove container 66c213f1729f4a77009002e7c711da0c4dbcd748877205d554372708aea4c0bc as it is running - running or paused containers cannot be removed without force: container state improper
如果要一次删除多个容器,可以在 podman rm 命令后面跟随多个容器的名称或 ID,之间使用空格分隔。例如:
C:\Users\hxstri> podman rm redis mysql57 infallible_ishizaka redis mysql57 infallible_ishizaka
注意:可以将容器名称替换为容器 ID,并且删除的容器必须没有正在运行。
若容器处于运行状态,需要使用 -f(--force)参数强制删除(相当于先停止再删除),例如:
# 确认 my-nginx 容器正在运行 C:\Users\hxstri> podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 66c213f1729f docker.io/library/nginx:latest nginx -g daemon o... 3 days ago Up 6 hours 0.0.0.0:9000->80/tcp my-nginx # 强制删除名为 my-nginx 的容器 C:\Users\hxstri> podman rm -f my-nginx my-nginx
下面命令仅适合在 Linux 系统中进行执行,Linux 系统会先执行 ${} 中的命令,然后将 $(podman ps -aq) 替换为 podman ps -aq 的结果(即所有容器的 ID,-a 显示所有,-q 只输出 ID)。例如:
podman rm $(podman ps -aq)
注意:进行该操作需要谨慎执行,避免删除有用的容器。
下面命令同样仅适用 Linux 系统内,比删除所有已停止的容器多了一个 -f 参数,强制删除容器。例如:
podman rm -f $(podman ps -aq)
注意:该操作非常危险,它将一次性清理系统中所有容器,谨慎使用,避免误删重要容器。
使用 -v(--volumes)参数会删除容器挂载的匿名卷(命名卷不会被删除,需手动清理)。例如:
# 创建命名卷(若不存在,也可在 run 时自动创建) C:\Users\hxstri> podman volume create nginx-html nginx-html # 创建 Nginx 容器,同时挂载命名卷和匿名卷 # -v nginx-html:/usr/share/nginx/html 挂载命名卷(宿主机命名卷 -> 容器内网页目录) # -v /var/log/nginx 挂载匿名卷(容器内日志目录,宿主机路径自动分配) C:\Users\hxstri> podman run -d --name my-nginx -p 9000:80 -v nginx-html:/usr/share/nginx/html -v /var/log/nginx nginx:latest 4bcfb60ac53753880a03c106f7c30739332cadfd264f16c071e5e1019035a709
打开 Podman Desktop 客户端,查看 my-nginx 的详细信息,如下图:


继续执行删除容器同时删除挂载的匿名卷的命令,如下:
C:\Users\hxstri> podman rm -v my-nginx my-nginx
再次返回 Podman Desktop 查看卷的信息,如下图:

使用 --ignore 参数可以确保删除不存在的容器时不输出错误信息,适合脚本中使用。例如:
C:\Users\hxstri> podman rm -f --ignore not_exist_container C:\Users\hxstri>
使用 -t(--timeout)参数可以指定等待容器停止的秒数(默认 10 秒),超时后强制终止。
注意,使用 --time 选项时必须指定 --force 选项。例如:
# 未指定 -f 选项,删除失败 C:\Users\hxstri> podman rm -t 10 rabbitmq Error: --force option must be specified to use the --time option # 删除成功 C:\Users\hxstri> podman rm -t 10 -f rabbitmq rabbitmq
如果你是 Linux 服务器,在删除容器前可以先使用 podman stop 命令停止容器, 停止成功后再执行 podman rm 命令删除容器,例如:
[user@localhost ~]$ podman stop my-nginx-alpine && podman rm my-nginx-alpine my-nginx-alpine my-nginx-alpine
还可以借助 Linux 脚本能力,批量清理所有已退出的容器(保留运行中),例如:
podman rm $(podman ps -qf "status=exited")
上面命令中,-f "status=exited" 筛选状态为“已退出” 的容器。
在使用 podman rm 删除容器前一定要谨慎操作,容器一旦删除就找不回来了。如果你没有将容器运行中的数据、日志、配置信息挂载到外部目录或者命名卷中,这些数据会随着容器被删除一起删除。
容器删除后,其日志、配置等数据会被清除(除非日志由外部驱动存储,如 journald)。
若容器挂载了外部目录(bind mount),删除容器不会影响宿主机上的挂载目录数据。
更多关于 podman rm 命令的信息请参考命令手册。