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

清理docker资源

引言:这几天,开发测试用服务器又磁盘满了,因为开发过程中经常有临时的build部署,服务器上的废弃images等资源累积很快,又得清理docker的资源了,整理下脚本,添加个定时任务去清理吧。

由此,整理下清理docker资源的命令,以方便备查。清理 Docker  是一个常见需求,因为 Docker 的镜像、容器、网络和卷可能会占用大量磁盘空间。如果你发现 Docker 的磁盘空间不足,可以按照以下步骤来清理不必要的资源。


1. 清理未使用的镜像

当你拉取镜像或构建镜像时,Docker 会保留它们,哪怕它们已经不再被使用。

清理未使用的镜像
sudo docker image prune
  • 只会删除 未被任何容器使用的悬空镜像(dangling images)
  • 悬空镜像是指没有标签(<none>)的镜像。
清理所有未使用的镜像
sudo docker image prune -a
  • 删除所有没有被任何容器使用的镜像(包括带标签的镜像)。
  • 如果某些镜像可能会在未来再次使用,建议不要使用 -a 参数。

2. 清理未使用的容器

当你停止一个容器后,容器的存储空间仍然会占用磁盘,直到你手动删除它。

列出所有停止的容器
sudo docker ps -a -f status=exited
删除所有停止的容器
sudo docker container prune
  • 会删除所有停止的容器。
  • 如果你只想删除特定的容器,可以先使用 docker ps -a 查看容器 ID,然后手动删除:
    sudo docker rm <container_id>

3. 清理未使用的卷

Docker 卷用于持久化容器数据,即使容器被删除,卷仍会保留。因此,未使用的卷可能会占用大量空间。

列出所有未使用的卷
sudo docker volume ls -f dangling=true
删除所有未使用的卷
sudo docker volume prune
  • 注意:未使用的卷是指没有被任何容器挂载的卷。

4. 清理未使用的网络

Docker 网络也会随着时间的推移累积,尤其是一些用户自定义网络或孤立网络。

列出所有未使用的网络
sudo docker network ls
删除未使用的网络
sudo docker network prune
  • 只会删除未被任何容器使用的网络。
  • 注意:默认的网络(如 bridgehost 和 none)不会被清理。

5. 一键清理所有未使用的资源

如果你想一次性清理所有未使用的 Docker 资源(镜像、容器、卷、网络),可以使用以下命令:

sudo docker system prune
清理所有未使用的资源(包括未使用的镜像)
sudo docker system prune -a
  • -a 参数会删除所有未被使用的镜像,而不仅仅是悬空镜像。
  • 注意:这可能会删除你以后可能需要的镜像,请谨慎使用。

6. 查看磁盘占用情况

在清理之前或之后,你可以查看 Docker 的磁盘空间使用情况。

查看 Docker 资源的磁盘占用
sudo docker system df
示例输出
TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 5 2 1.2GB 800MB (66%) Containers 3 1 500MB 400MB (80%) Local Volumes 4 2 2GB 1.5GB (75%) Build Cache 0 0 0B 0B

7. 手动删除特定资源

删除特定的容器
sudo docker rm <container_id>
删除特定的镜像
sudo docker rmi <image_id>
删除特定的卷
sudo docker volume rm <volume_name>
删除特定的网络
sudo docker network rm <network_name>

8. 清理 Docker 的构建缓存

Docker 在构建镜像时会产生缓存,随着时间的推移可能占用大量磁盘空间。

清理构建缓存
sudo docker builder prune
清理所有的构建缓存(包括运行中的)
sudo docker builder prune --all

9. 定期清理的建议

为了避免 Docker 资源堆积,可以设置定期清理的计划任务。例如,使用 cron 定期运行以下命令:

设置定期清理未使用的资源

编辑 cron 任务:

sudo crontab -e

添加以下内容(每周清理一次未使用的资源):

0 2 * * 0 docker system prune -f

总结

清理 Docker 的资源需要根据实际需求选择合适的命令:

  1. 清理未使用的镜像:docker image prune -a
  2. 清理停止的容器:docker container prune
  3. 清理未使用的卷:docker volume prune
  4. 清理未使用的网络:docker network prune
  5. 一键清理所有未使用资源:docker system prune -a

在清理之前,建议使用 docker system df 查看资源占用情况。


http://www.kler.cn/a/566835.html

相关文章:

  • 构建逻辑思维链(CoT)为金融AI消除幻觉(保险赔付篇)
  • STM32——HAL库开发笔记24(定时器5—超声波测距)(参考来源:b站铁头山羊)
  • React底层常见的设计模式
  • Vue的data配置项
  • Go红队开发—语法补充
  • 迁移过程中,hive元数据字段校对
  • 在kubernetes集群中持续压测 SpringCloud 应用,pod 的 memory cache 持续增长问题
  • Mysql .idb文件 恢复
  • Windows10 Xming6 + Xshell7 实现远程 ubuntu-24.04.1-desktop gui 界面本地展示
  • Redis 同步机制详解
  • Docker 部署 Spring Cloud 项目:实战指南与经验分享
  • Djiang 5实用指南(八)后台管理系统
  • JSON-to-Excel v2.0.0发布,可以在Excel内部,把JSON转换成Excel格式,嵌套的JSON也能转
  • 5个GitHub热点开源项目!!
  • 【初阶数据结构】链表的柔光之美
  • 主流 AI 芯片配置
  • STM32之时钟树
  • Doris、ClickHouse 和 Flink 这三个技术典型的应用场景
  • 关于Hadoop集群部署打不开webUI界面问题
  • 软件安全性测试类型分享,第三方软件测试机构如何进行安全性测试?