当前位置: 首页 > news >正文

Docker 清理镜像策略详解

文章目录

  • 前言
      • 一、删除 Docker 镜像
        • 1. 查看当前镜像
        • 2. 删除单个镜像
        • 3. 删除多个镜像
        • 4. 删除所有未使用的镜像
        • 5. 删除悬空的 Docker 镜像
        • 6. 根据模式删除镜像
        • 7. 删除所有镜像
      • 二、删除 Docker 容器
        • 1. 查找容器
        • 2. 删除一个或多个特定容器
        • 3. 退出时删除容器
        • 4. 删除所有已退出的容器
        • 5. 使用多个过滤器删除容器
      • 三、清理保存的镜像
        • 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.lryc.cn/news/495033.html

相关文章:

  • 【Linux】TCP网络编程
  • 排序学习整理(2)
  • AI蛋白质设计与人工智能药物设计
  • IOS ARKit进行图像识别
  • 初级数据结构——二叉搜索树
  • C++设计模式之组合模式中如何实现同一层部件的有序性
  • duxapp RN 端使用AppUpgrade 进行版本更新
  • 【计网】自定义序列化反序列化(三) —— 实现网络版计算器【下】
  • 神经网络中的优化方法(一)
  • Linux 计算机网络基础概念
  • qt QGraphicsEllipseItem详解
  • Python websocket
  • 【MySQL-5】MySQL的内置函数
  • 深度学习笔记之BERT(三)RoBERTa
  • C++知识点总结(59):背包型动态规划
  • C++:反向迭代器的实现
  • webGL入门教程_04vec3、vec4 和齐次坐标总结
  • uniapp中父组件数组更新后与页面渲染数组不一致实战记录
  • 优化 Conda 下载速度:详细的代理配置和网络管理策略
  • 服务器遭受DDoS攻击后如何恢复运行?
  • MFC音视频播放器-支持电子放大等功能
  • c语言编程1.17蓝桥杯历届试题-回文数字
  • el-table 纵向 横向 多级表头
  • uniapp开发微信小程序笔记8-uniapp使用vant框架
  • 分布式项目使用Redis实现数据库对象自增主键ID
  • npm-运行项目报错:A complete log of this run can be found .......npm-cache_logs\
  • SolarCube: 高分辨率太阳辐照预测基准数据集
  • 华为小米苹果三星移动设备访问windows共享文件夹windows11
  • 网络安全三防指南:只防病毒不安全
  • 论文概览 |《Urban Analytics and City Science》2023.05 Vol.50 Issue.4