Podman 教程

Podman 清理未使用的资源

Podman 作为轻量级的容器运行时,在长期频繁的使用过程中,会持续累积大量不必要的垃圾数据,这些数据不仅会占用服务器或本地主机的大量磁盘空间,还可能导致容器启动速度变慢、镜像拉取失败、磁盘使用率告警等问题,因此需要我们定期手动执行清理操作,精准释放被占用的磁盘资源。

从垃圾数据的构成来看,主要包含以下几类:

  1. 未使用的镜像:拉取新版本镜像后遗留的旧版本镜像、构建镜像时产生的中间层镜像、下载失败的残缺镜像文件。

  2. 停止的容器:运行结束后未及时删除的容器实例,这类容器会残留日志文件、挂载目录和配置数据。

  3. 悬空卷:容器被删除后未同步清理的持久化卷,卷中可能存储了容器运行时的临时数据或日志。

  4. 缓存文件:Podman 拉取镜像时的缓存、构建镜像过程中生成的临时缓存目录,以及 /run/user/<UID>/libpod 下的临时文件(如前文报错中提到的 infra-container 残留文件)。

为了清理上面这些垃圾数据,Podman 为我们提供了一个 podman system prune 命令,用于一键删除系统中「闲置 / 无用」的容器、镜像、数据卷、构建缓存、网络等资源,是释放磁盘空间、清理 Podman 冗余资源的关键工具。

语法格式

运行 podman system prune --help 命令,查看语法格式:

C:\Users\Administrator> podman system prune --help
清理未使用的数据

说明:

        podman system prune

        清理未使用的数据


用法:
  podman system prune [选项]

示例:
  podman system prune

选项:
  -a, --all                  清理所有未使用的数据
      --build                清理构建容器
      --external             清理存储中不受 Podman 管控的容器数据
      --filter 字符串数组    提供过滤条件(例如:'label=<键>=<值>')
  -f, --force                不提示确认信息,默认值为 false
      --volumes              清理卷

基本用法

(1)清理闲置容器、未被引用的镜像、构建缓存、无用网络(默认交互式确认)

C:\Users\Administrator> podman system prune
WARNING! This command removes:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - all dangling build cache

Are you sure you want to continue? [y/N]

此时,输入 y 即可完成清理。

(2)非交互式清理,自动跳过确认,适合脚本/自动化。例如:

C:\Users\Administrator> podman system prune -f
Deleted Containers
66035faba1f6a661c0c29a9418d6b95a43dc621758016786da61207ffe479b36
Deleted Networks
prod_network
springcloud-network
test
my-network
my-pod-network
Total reclaimed space: 24.98kB

不需要用户输入 y/N 进行确认,自动完成清理。

(3)清理所有闲置资源,包括被停止容器引用的镜像,谨慎操作,可能会误删除数据

C:\Users\Administrator> podman system prune -a
WARNING! This command removes:
        - all stopped containers
        - all networks not used by at least one container
        - all images without at least one container associated with them
        - all build cache

Are you sure you want to continue? [y/N]

输入 y 确认,即可清除数据。

(4)仅清理 7 天前创建的闲置资源

# 清理 7 天前(168 小时)创建的停止容器/悬空镜像
C:\Users\Administrator> podman system prune -af --filter "until=168h"
Deleted Images
1c390e3bb5cb9c724e3947b45e57c8d73f0afe2b308141261c5669d7d97a452e
5dd467fce50b56951185da365b5feee75409968cbab5767b9b59e325fb2ecbc0
778c3ea605c2c786ad6f7b9efe50c065903b1b4c7a4f5b2c6d76507b01402470
d4918ca78576a537caa7b0c043051c8efc1796de33fee8724ee0fff4a1cabed9
706db57fb2063f39f69632c5b5c9c439633fda35110e65587c5d85553fd1cc38
f6b0ca07d79d7d19c8da64558c3ccdd4ea635ac2193f551a1cb5370f33b494e8
Total reclaimed space: 1.257GB

该命令支持的过滤条件及示例:

  • until=<duration>  清理指定时间前创建的资源,如 until=24h(24 小时前)、until=7d(7 天前)

  • label=<key>=<value>  清理匹配标签的资源,如 label=env=test(清理标签为 env=test 的资源)

  • container=<name/id>  仅清理指定容器关联的闲置资源,如 container=my-old-container

  

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号