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"
虽然这个命令可以释放资源,但在执行时需要仔细确认,以免误删数据,必要情况下需要备份重要的数据。
注意:docker system prune -a 是一个非常有用但也需要小心使用的 Docker 命令。这条命令的作用是清理Docker环境中不再需要的资源,以节省存储空间。这些资源包括已停止的容器、未使用的网络、悬挂的镜像以及构建缓存。
具体来说,docker system prune -a 会做以下操作:
- 删除所有已停止的容器:这可以帮助释放被这些容器占用的存储空间。
- 删除所有未使用的网络:这些网络通常在不再需要时应当被删除。
- 删除所有悬挂的镜像:悬挂的镜像是没有标签的镜像,这些镜像通常是由于新版本的镜像被拉取后,旧版本的镜像失去了其原有的标签而成为悬挂的。
- 由于 -a 选项,命令还会删除所有未被任何容器引用的镜像,不仅仅是悬挂的镜像。这意味着,即使某个镜像有标签,但如果它没有被任何容器使用,那么它也会被删除。
- 删除所有的构建缓存:这些缓存通常用于加速Docker镜像的构建,但在某些情况下,它们可能会占用大量的存储空间。
使用此命令时应当非常小心,因为一旦资源被删除,就无法恢复。在执行此命令之前,建议先备份所有重要的数据和容器。
如果只想清理特定的资源,例如只删除已停止的容器,可以使用其他更具体的命令,如 docker container prune
总结
栏 目:其它服务器
下一篇:ubuntu如何在docker容器中安装strongswan
本文标题:docker system prune命令使用示例详解
本文地址:https://zz.feitang.co/server/28557.html
您可能感兴趣的文章
- 12-22nginx代理实现静态资源访问的示例代码
- 12-22Docker 存储管理的几种方式
- 12-22nginx静态资源的服务器配置方法
- 12-22Docker Compose部署微服务项目上线功能
- 12-22GPU服务器的多用户配置方法
- 12-22docker-compose搭建etcd集群的实现(三节点)
- 12-22docker中mysql开启日志的实现步骤
- 12-22Linux下docker安装mysql8并配置远程连接
- 12-22docker部署mysql8并设置可远程连接
- 12-22阿里云oss对象存储使用详细步骤


阅读排行
推荐教程
- 12-11docker存储目录迁移示例教程
- 12-10docker start启动容器后仍然exit状态的解决
- 12-10Linux下如何安装Logstash
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-14Docker Desktop无法正常启动解决(failed to start...)
- 12-14k8s 与docker空间使用分析与清理方法
- 12-13k8s编排之Deployment知识点详解
- 12-13Nginx IP封禁及自动封禁IP的实现
- 12-13Nginx代理Partainer如何使用





