清理Docker废弃镜像与缓存详细图文教程

 更新时间:2024年07月25日 10:41:23   作者:Ma.wenda  
在使用Docker进行开发和部署过程中,我们可能会遇到需要删除旧镜像和容器以释放磁盘空间或清除不再需要的缓存的情况,这篇文章主要给大家介绍了关于清理Docker废弃镜像与缓存的相关资料,需要的朋友可以参考下

1 场景

在使用Docker部署项目时失败,提示no space left on device,没有剩余空间,如下所示。

2 解决办法

2.1 查看磁盘空间占用情况

在终端输入以下命令

df -h

可以看到占用率都达到100%

2.2 查看 Docker 容器、镜像、卷等资源的占用情况

在终端输入以下命令

docker system df

在构建项目时,会产生Build Cache,真正使用的镜像,是占不了太多的空间的。

2.3 清理

清理镜像有两种方式,作者目前了解到的分别有以下两种方式,列了一下区别,大家按需使用。

命令docker rmi <IMAGE_ID_1> …docker system prune -a
功能用于删除指定的镜像。你可以通过镜像 ID 或者镜像名称来指定要删除的镜像,支持输入多个,空格隔开。用于清理 Docker 系统中的不再使用的镜像、缓存、容器和网络等资源。它会删除未使用的镜像、停止的容器、无效的网络等,以释放磁盘空间。
范围只会删除指定的镜像。清理整个 Docker 系统中的未使用资源,包括未使用的镜像、容器、网络和数据卷等。
操作注意需要明确指定要删除的镜像的 ID 或者名称。在执行该命令之前,请确保你要删除的镜像是不再需要的。强制清理命令,它会删除所有未使用的资源,包括未使用的镜像、容器等。在执行该命令之前,请确保你不再需要这些资源,因为操作是不可逆的。

作者这里使用的是 docker system prune -a, 正常情况下建议使用第一种,使用第二种的时候一定要注意。

2.3.1 清理指定镜像

  • 先查看所有得镜像。
docker images

  • 行以下命令,将 rmi 后边的字符串换成自己想清理的 IMAGE ID,支持删除多个
docker rmi 5457fb6ac112 01bbee84cc9c 4d81f08e4937
  • 再次查看所有镜像,发现镜像删除成功
  • 如果遇到以下报错,添加 -f 参数再删除

Error response from daemon: conflict: unable to delete 5457fb6ac112 (must be forced) - image is referenced in multiple repositories
提示代表要删除的镜像被多个仓库引用,无法直接删除。如果你确定要删除这个镜像,可以使用强制删除命令来删除

  • 执行以下命令
docker rmi -f 5457fb6ac112 01bbee84cc9c 4d81f08e4937

2.3.2 清理所有废弃镜像与Build Cache

  • 在终端输入以下命令
docker system prune -a

  • 会提示Are you sure you want to continue,是否继续,输入 y 回车即可,就可以看到如下日志。
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N] y
Deleted Images:
deleted: sha256:1c4f6085bbccd2e35f97973cbeb10f92da7ff1262914bb2426cb26ca982ba2fc
deleted: sha256:d918c746d2b894403b51d05161b63b0a450187a67fcf3d554c523705d47b4f47
deleted: sha256:231a1ce2abdf3744abced50f9675d584e07e6b4523db1fb0f613b748ad06e946
deleted: sha256:f813c35c0538a81c322a6839bfd6d1616630a6b5c9aa2ee7f0f25a426a563d25
deleted: sha256:268e6417f2f8bda44087d663fea6dc2b7eab726fcd6b37434d594ddd12b4bd4e
deleted: sha256:f2d9885d594165564996eeb6bf7d52f3dc5011ffdc9ed8fed6288724cd33b8de
# =========================此处省略部分日志,太多了。。。。
Deleted build cache objects:
w1c50dy2r45e6vo7n464zufhi
wm32f28avtp3u1j729zwsqqhg
ifbfsnqhsxa0lgpf8q583wt3p
emv9b5icrzg3mt2o7qgytp44p
rtum938pugfhp9i30lk7yaypa
g24xa4962hmfp0wnmhyv3eehi
sprlhorxphn4tu1idayycicez
xm3zzvxi3ewm6fwmtpizv46lt
n7372bzka4c96a4or52fa4k0u
pcvjb2payp85tzepsjvnc8iw8
# =========================此处省略部分日志,太多了。。。。
  • 清理完成,再次查看占用情况,清理成功

总结 

到此这篇关于清理Docker废弃镜像与缓存的文章就介绍到这了,更多相关Docker废弃镜像与缓存清理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于Dockerfile镜像制作完整实例

    关于Dockerfile镜像制作完整实例

    本文详细介绍了如何使用Docker制作镜像,并通过实际应用发版展示了制作过程,主要内容包括创建和启动Docker容器的脚本(init.sh、start.sh、stop.sh、restart.sh),以及配置目录,文章还讨论了Docker容器IP地址的作用,并总结了制作新镜像的基本步骤
    2024-11-11
  • Docker自动部署Apache Tomcat的方法

    Docker自动部署Apache Tomcat的方法

    这篇文章主要介绍了Docker自动部署Apache Tomcat的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Docker+Watchtower实现容器自动更新的终极方案

    Docker+Watchtower实现容器自动更新的终极方案

    在容器化应用日益普及的今天,如何高效管理容器更新成为了每个 DevOps 工程师和开发者的必修课,下面我们就来看看如何使用 Watchtower 这一神器来实现 Docker 容器的自动更新吧
    2025-05-05
  • docker时区问题和迁移数据问题

    docker时区问题和迁移数据问题

    这篇文章主要介绍了docker时区问题和迁移数据问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • docker镜像的导入和导出的实现

    docker镜像的导入和导出的实现

    这篇文章主要介绍了docker镜像的导入和导出的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 使用 Docker 部署 Apache Spark 集群的过程

    使用 Docker 部署 Apache Spark 集群的过程

    本文介绍了如何使用Docker和DockerCompose快速部署一个包含一个Master节点和两个Worker节点的Spark集群,通过创建docker-compose.yml文件并执行相关命令,可以实现集群的构建和启动,感兴趣的朋友一起看看吧
    2025-02-02
  • Docker容器内存限制的方法

    Docker容器内存限制的方法

    本篇文章主要介绍了Docker容器内存限制的方法,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • Docker 镜像和容器的区别详解

    Docker 镜像和容器的区别详解

    这篇文章主要介绍了Docker 镜像和容器的区别详解的相关资料,需要的朋友可以参考下
    2016-10-10
  • 基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境的详细教程

    基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境的详细教程

    K8S全称是Kubernetes,是一个全新的基于容器技术的分布式架构领先方案,这篇文章主要介绍了基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境(环境搭建篇),对docker K8S持续集成交付环境相关知识感兴趣的朋友一起看看吧
    2021-05-05
  • Docker Namespace容器隔离的实现

    Docker Namespace容器隔离的实现

    Namespace是Docker容器中的一种隔离机制,通过划分资源独立空间,确保容器之间互不干扰,本文主要介绍一下Docker Namespace容器隔离的实现,感兴趣的可以了解一下
    2024-11-11

最新评论