docker system prune 命令详解

该命令用于删除 Docker 系统中未使用的数据

1.介绍

官网描述:删除所有未使用的容器、网络、映像(包括悬挂的和未引用的),以及卷(可选)。
名词解释:

  • 未使用的容器:所有已停止的容器将被删除。
  • 未使用的镜像:只有悬挂的镜像(未被任何容器引用)将被删除,除非使用了 -a 或 --all 参数。
  • 未使用的网络:所有未被容器使用的自定义网络将被删除。
  • 未使用的卷(如果使用 --volumes 或 -v 选项):所有未被容器引用的卷将被删除。

相关参数:

  • -a, --all:删除未被任何容器引用的所有镜像,而不仅仅是悬挂的镜像。
  • –filter:根据提供的条件过滤要删除的内容。
  • –force, -f:跳过确认步骤,直接执行删除,不加的话在执行步骤时需要手动确认,建议不用。手动容错率高一点
  • –volumes, -v:删除所有未被至少一个容器引用的卷。

2.使用示例

简单示例:

  • 删除所有未使用的容器、镜像、网络:docker system prune
  • 删除所有未使用的容器、镜像(包括未被引用的)、网络:docker system prune -a
  • 删除所有未使用的容器、镜像、网络、卷:docker system prune --volumes

Filtering (–filter)

until 过滤器

此过滤器允许删除在给定时间戳之前创建的容器、镜像和网络。
支持Unix时间戳、日期格式的时间戳或Go持续时间字符串(例如10m、1h30m),这些字符串是相对于守护进程机器的时间计算的。

docker system prune --filter "until=1h"

label 过滤器

label 过滤器允许根据容器、镜像、网络和卷的标签进行筛选。有两种格式:label=label== 只会删除具有指定标签的对象,而 label!= 或** label!==** 会删除不具有指定标签的对象。
假设有一个 “nginx” 容器,版本标签为 “1.21.0”。可以按以下方式使用标签过滤器:
第一种:删除所有带有 “version=1.21.0” 标签的未使用的容器、镜像和网络

docker system prune --filter "label=version=1.21.0"

第二种:删除所有不带有 “app=nginx” 标签的未使用的容器、镜像和网络

docker system prune --filter "label!=app=nginx"

也可以与-a和-v一起使用

docker system prune -a -v --filter "label!=app=nginx"

其中label可以使用docker inspect <容器id或名称> 来查看labels
下面是一个容器的Labels部分

{
  
  "Labels": {
                "com.docker.compose.config-hash": "b637c41bf29efe8fcd1d3c7baa3ad5ba8dc44f21cec0d3937d665fb79df76644",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "jpom",
                "com.docker.compose.project.config_files": "docker-compose.yml",
                "com.docker.compose.project.working_dir": "/www/docker-compose/jpom",
                "com.docker.compose.service": "jpom",
                "com.docker.compose.version": "1.29.2"
  }
}

以下是示例:
1.删除特定项目的所有容器、图像和网络:

docker system prune --filter "label=com.docker.compose.project=jpom"

2.删除特定服务的所有容器、图像和网络:

docker system prune --filter "label=com.docker.compose.service=jpom"

3.删除使用特定版本的Docker Compose创建的所有容器、图像和网络:

docker system prune --filter "label=com.docker.compose.version=1.29.2"

虽然这个命令可以释放资源,但在执行时需要仔细确认,以免误删数据,必要情况下需要备份重要的数据。


你的内心将世界解读成什么样子,你最终就会活成什么样子

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值