Docker 清理镜像策略详解

news/2024/12/2 8:30:44/

文章目录

  • 前言
      • 一、删除 Docker 镜像
        • 1. 查看当前镜像
        • 2. 删除单个镜像
        • 3. 删除多个镜像
        • 4. 删除所有未使用的镜像
        • 5. 删除悬空的 Docker 镜像
        • 6. 根据模式删除镜像
        • 7. 删除所有镜像
      • 二、删除 Docker 容器
      • 三、清理保存的镜像
        • 1. 保存镜像为 tar 包
        • 2. 从 tar 包中加载镜像
      • 四、一键清理所有未使用的资源
      • 五、注意事项
  • 总结


前言

Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。然而,随着时间的推移,Docker 镜像、容器和数据卷的积累可能会导致磁盘空间的浪费。因此,合理地清理这些资源变得尤为重要。本文将详细介绍 Docker 清理镜像的策略,包括删除镜像、删除容器和清理保存的镜像。

一、删除 Docker 镜像

1. 查看当前镜像

在进行任何删除操作之前,首先需要查看当前系统中存在的所有镜像。可以使用以下命令:

docker images

此命令将列出所有本地存在的镜像,包括标签和镜像ID。

2. 删除单个镜像

如果需要删除单个镜像,可以使用 docker rmi 命令,后跟镜像的名称或ID:

docker rmi <镜像名称或ID>

如果镜像正在被使用,Docker 默认不允许删除。但可以使用 -f 参数强制删除:

docker rmi -f <镜像名称或ID>
3. 删除多个镜像

如果要一次性删除多个镜像,可以列出它们的名称或ID:

docker rmi <镜像1> <镜像2> <镜像3>

同样,如果需要强制删除,可以添加 -f 选项:

docker rmi -f <镜像1> <镜像2> <镜像3>
4. 删除所有未使用的镜像

使用以下命令删除所有未被任何容器引用的镜像:

docker image prune

如果要删除包括正在使用的所有镜像,可以使用以下命令,但需谨慎操作:

docker rmi $(docker images -q)
5. 删除悬空的 Docker 镜像

悬空镜像是那些与任何标记过的镜像无关的层。它们不再有用并消耗磁盘空间。可以通过以下命令定位这些镜像,并使用 docker image prune 命令删除:

docker images -f dangling=true
docker image prune
6. 根据模式删除镜像

可以使用 docker images 和 grep 的组合找到所有与某个模式匹配的镜像,然后使用 awk 将 ID 传递给 docker rmi 进行删除:

docker images -a | grep "pattern" | awk '{print $1":"$2}' | xargs docker rmi
7. 删除所有镜像

系统上的所有 Docker 镜像可以通过以下命令列出。一旦确定要删除它们,可以添加 -q 标志来传递镜像 ID 给 docker rmi

docker images -a
docker rmi $(docker images -a -q)

二、删除 Docker 容器

1. 查找容器

使用 docker ps -a 命令来定位你想要删除的容器的名称或 ID:

docker ps -a
2. 删除一个或多个特定容器

要删除一个或多个特定容器,可以使用以下命令:

docker rm ID_or_Name ID_or_Name
3. 退出时删除容器

如果你在创建容器时就知道一旦完成就不想保留它,可以运行 docker run --rm 来在容器退出时自动删除它:

docker run --rm image_name
4. 删除所有已退出的容器

要查看已退出容器的列表,请使用 -f 标志基于状态进行筛选。确认想要删除这些容器后,使用 -q 将 ID 传递给 docker rm 命令:

docker ps -a -f status=exited
docker rm $(docker ps -a -f status=exited -q)
5. 使用多个过滤器删除容器

可以通过多个过滤器来删除容器,例如根据状态和名称:

docker ps -a -f "status=exited" -f "name=pattern"
docker rm $(docker ps -a -f "status=exited" -f "name=pattern" -q)

三、清理保存的镜像

1. 保存镜像为 tar 包

使用 docker save 命令将指定镜像保存为一个 tar 压缩包,可以用于传输或备份:

docker save -o mynginx.tar mynginx:v1
2. 从 tar 包中加载镜像

使用 docker load 命令从一个 tar 包中加载镜像到本地 Docker 库:

docker load -i mynginx.tar

四、一键清理所有未使用的资源

Docker 提供了一个强大的命令,可以一键清理所有未使用的资源,包括镜像、容器、数据卷和网络:

docker system prune

如果要删除所有未使用的资源(包括已停止的容器和所有未使用的镜像),可以添加 -a 标志:

docker system prune -a

五、注意事项

  1. 谨慎操作:在执行删除操作时,务必确认要删除的镜像和容器,以免误删重要资源。
  2. 定期清理:定期执行清理操作,以避免资源累积过多。
  3. 备份重要数据:在删除之前,确保备份所有重要数据,以防万一。

总结

通过上述策略,可以有效地管理和清理 Docker 镜像,保持系统的整洁和高效运行。


http://www.ppmy.cn/news/1551703.html

相关文章

4.8E-R图

ER图 里面的东西说的是对应关系&#xff0c;就是说股东持有民宿的数量从1到n&#xff0c;民宿对股东就是民宿对应的股东是从1到n 例子 连接数据库

SeggisV1.0 遥感影像分割软件【源代码】讲解

在此基础上进行二次开发&#xff0c;开发自己的软件&#xff0c;例如&#xff1a;【1】无人机及个人私有影像识别【2】离线使用【3】变化监测模型集成【4】个人私有分割模型集成等等&#xff0c;不管是您用来个人学习还是公司研发需求&#xff0c;都相当合适&#xff0c;包您满…

CLIP-MMA: Multi-Modal Adapter for Vision-Language Models

当前的问题 CLIP-Adapter仅单独调整图像和文本嵌入&#xff0c;忽略了不同模态之间的交互作用。此外&#xff0c;适应性参数容易过拟合训练数据&#xff0c;导致新任务泛化能力的损失。 动机 图1所示。多模态适配器说明。 通过一种基于注意力的 Adapter &#xff0c;作者称之…

elementUI el-image的使用

elementUI组件 el-image 慎用lazy属性 <el-image :src"item.picture" alt"" lazy :title"item.title"></el-image> lazy懒加载属性会导致有些图片无法显示

一万台服务器用saltstack还是ansible?

一万台服务器用saltstack还是ansible? 选择使用 SaltStack 还是 Ansible 来管理一万台服务器&#xff0c;取决于几个关键因素&#xff0c;如性能、扩展性、易用性、配置管理需求和团队的熟悉度。以下是两者的对比分析&#xff0c;帮助你做出决策&#xff1a; SaltStack&…

位运算在嵌入式系统开发中的应用

目录 一、数据存储与节省 “绝技” 1.1. 传感器数据存储挑战 1.2. 位运算解决方案 1.2.1. 数据整合 1.2.2. 数据提取 1.3. 收益分析 二、硬件控制 “精准操纵术” 2.1. 位运算操控硬件寄存器的实例 2.2. 位运算在硬件控制中的优势 2.3. 电机驱动芯片寄存器控制示例 …

MySQL —— MySQL 程序

目录 前言 一、MySQL 程序简介 二、mysqld -- MySQL 服务器 三、mysql -- MySQL 客户端 1. mysql 客户端简介 2. mysql 客户端选项 &#xff08;1&#xff09;指定选项的方式 &#xff08;2&#xff09;mysql 客户端命令常用选项 &#xff08;3&#xff09;在命令行中使…

用Python做数据分析环境搭建及工具使用(Jupyter)

目录 一、Anaconda下载、安装 二、Jupyter 打开 三、Jupyter 常用快捷键 3.1 创建控制台 3.2 命令行模式下的快捷键 3.3 运行模式下快捷键 3.4 代码模式和笔记模式 3.5 编写Python代码 一、Anaconda下载、安装 【最新最全】Anaconda安装python环境_anaconda配置python…