背景

在使用docker进行容器化管理后会发现本次硬盘文件占用量在不断上升,并且即使是删除掉容器或者镜像也并不能释放掉对应的硬盘空间。本文将提供对应的docker命令用于真正释放掉该部分应被删除释放的空间却仍然存留占用硬盘空间的相关垃圾文件。

查询命令

docker system df

docker空间占用查看,该命令可以列出docker应用中镜像,容器,数据卷所占用的容量,在此说明下即使是容器被删除了数据卷也不会随着容器的删除而删除。

[root@root ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 5 1 1.512 GB 1.386 GB (91%)
Containers 1 0 5 kB 5 kB (100%)
Local Volumes 0 0 0 B 0 B

增加-v命令可以输出更加详细的占用信息,针对每个镜像,每个容器,每个数据卷信息都将被输出。用户可以根据该命令来判断是哪个镜像、容器、数据卷导致的占用过高

docker system df -v
Images space usage: REPOSITORY TAG IMAGE ID CREATED SIZE SHARED SIZE UNIQUE SIZE CONTAINERS
docker.io/nginx latest 5ad3bd0e67a9 7 days ago 126.7 MB 0 B 126.7 MB 1
docker.io/jenkins/jenkins latest 5810ec636c04 5 weeks ago 581.9 MB 0 B 581.9 MB 0
docker.io/ubuntu 14.04 6e4f1fe62ff1 5 weeks ago 196.5 MB 0 B 196.5 MB 0
docker.io/mysql 5.6 e143ed325782 2 months ago 302.4 MB 0 B 302.4 MB 0
docker.io/adoptopenjdk/openjdk8 latest 48f5ba11c251 4 months ago 304.8 MB 0 B 304.8 MB 0 Containers space usage: CONTAINER ID IMAGE COMMAND LOCAL VOLUMES SIZE CREATED STATUS NAMES
39cc6235b753 docker.io/nginx "nginx -g 'daemon ..." 0 5 kB 28 hours ago Exited (0) 26 hours ago xxxx Local Volumes space usage: VOLUME NAME LINKS SIZE

清除命令

自动清理命令

docker system prune可对空间进行自动清理。

该命令所清理的对象如下:

  1. 已停止的容器(未启动的容器)
  2. 未被任何容器使用的卷
  3. 未被任何容器所关联的网络
  4. 所有悬空的镜像(未配置任何Tag(也就是无法被引用)的镜像,通常是由于镜像编译过程中未指定-t参数配置Tag导致的,又或者是在镜像编译过程中因为某种原因导致构建失败的镜像)

docker system prune后可以加额外的参数,如:

  1. docker system prune -a : 一并清除所有未被使用的镜像(未被构建成容器容器的镜像)和悬空镜像。
  2. docker system prune -f : 用以强制删除,不提示信息。

另外除了system级别的,还有针对容器或是镜像级别的删除命令:

  1. docker image prune:删除悬空的镜像。
  2. docker container prune:删除无用的容器。

    --默认情况下docker container prune命令会清理掉所有处于stopped状态的容器

    --如果不想那么残忍统统都删掉,也可以使用--filter标志来筛选出不希望被清理掉的容器。例子:清除掉所有停掉的容器,但24内创建的除外:

    --$ docker container prune --filter "until=24h"
  3. docker volume prune:删除无用的卷。
  4. docker network prune:删除无用的网络

手动删除

也可以通过查询出相关的镜像、容器、数据卷后调用相应的删除语句进行删除。

例如:

  1. 删除所有悬空镜像,不删除未使用镜像:

    docker rmi $(docker images -f "dangling=true" -q)
  2. 删除所有未使用镜像和悬空镜像

    docker rmi $(docker images -q)
  3. 清理卷

    如果卷占用空间过高,可以清除一些不使用的卷,包括一些未被任何容器调用的卷(-v 详细信息中若显示 LINKS = 0,则是未被调用):

    删除所有未被容器引用的卷:

    docker volume rm $(docker volume ls -qf dangling=true)
  4. 容器清理

    如果发现是容器占用过高的空间,可以手动删除一些:

    删除所有已退出的容器:

    docker rm -v $(docker ps -aq -f status=exited)
  5. 删除所有状态为dead的容器

    docker rm -v $(docker ps -aq -f status=dead)

docker - 如何清理硬盘中无关占用的更多相关文章

  1. 一键清理 Nexus 中无用的 Docker 镜像

    现许多团队使用 Nexus 来管理 Docker 镜像,产品不断迭代,镜像仓库占用的磁盘空间也越来越大.由于 Nexus 的控制台并未提供批量操作镜像功能,清理镜像十分不便.本文分享一个清理 Nexu ...

  2. Mac电脑清理硬盘"其他"

    作为一个MacBook的使用者,无不感受到苹果对于系统和硬件的完美匹配. 苹果电脑不适合玩游戏,所以我只用它开发iOS使用.电脑里除了Xcode和常用办公软件与通讯软件以外,我没有装其他的任何大应用. ...

  3. docker 磁盘清理 相关

    用户在使用 Docker 部署业务一段时间后,可能会发现宿主节点的磁盘容量持续增长,甚至将磁盘空间耗尽进而引发宿主机异常,进而对业务造成影响. 本文先对 Docker 的空间分析与清理进行说明,然后对 ...

  4. Android中图片占用内存的计算

    Android中图片占用内存的计算 原文链接 http://blog.sina.com.cn/s/blog_4e60b09d01016133.html   在Android开发中,我现在发现很多人还不 ...

  5. docker实战——在测试中使用Docker

    在之前几章中介绍的都是Docker的基础知识,了解什么是镜像,docker基本的启动流程,以及如何去运作一个容器等等. 接下来的几个章节将介绍如何在实际开发和测试过程中使用docker. 将Docke ...

  6. .net core, docker 在vs2019开发过程中的问题以及解决办法

    .net core, docker 在vs2019开发过程中的问题以及解决办法 记录下来,帮助Ta人~ 1.vs调试,快Build完后提示Docker 端口:xxxx,xxxx,xxxx占用 解决办法 ...

  7. Windows中杀死占用某个端口的进程

    Windows中杀死占用某个端口的进程 netstat -ano | findstr //列出进程极其占用的端口,且包含 80 tasklist | findstr taskkill -PID < ...

  8. [转]Android中内存占用的含义:(VSS,PSS,RSS,USS)

    Android中内存占用的含义:(VSS,PSS,RSS,USS) 作者: andforce 分类: 安卓系统 发布时间: 2013-09-07 00:03 ė1,915 浏览数 6没有评论 在eng ...

  9. 虚拟机中如何Linux系统如何访问PC硬盘中的文件(如何将windows下的文件夹挂载到linux虚拟机下)

    这段时间决定学习嵌入式,变打算安装个Linux系统先熟悉一下Linux系统的使用,但自己电脑上安装的win7系统又不想装双系统,一是闲麻烦,二是由于对Linux系统不熟悉担心会因为自己的误操作而损坏系 ...

随机推荐

  1. ROS和Gazebo进行机器人仿真(一)

    Gazebo是一种多机器人仿真器,可用于室内外机器人仿真.Gazebo在ROS中有良好的接口,包含ROS和Gazebo的所有控制. 若要实现ROS到Gazebo的通信,我们必须安装ROS-Gazebo ...

  2. 【动手学pytorch】softmax回归

    一.什么是softmax? 有一个数组S,其元素为Si ,那么vi 的softmax值,就是该元素的指数与所有元素指数和的比值.具体公式表示为: softmax回归本质上也是一种对数据的估计 二.交叉 ...

  3. 【做题笔记】 P1610 鸿山洞的灯

    正解:DP 比较好写的/我用的算法:贪心 首先需要理解几个地方: 第二行输入的 \(n\) 个数字是每盏灯所在的地方.可以不按顺序,灯与灯之间的距离是个变量. 对于任意一段区间,只要是在 \(\tex ...

  4. CCF_ 201509-2_日期计算

    水. #include<iostream> #include<cstdio> using namespace std; ] = {{,,,,,,,,,,,,},{,,,,,,, ...

  5. Pycharm学习记录---同一目录下无法import明明已经存在的.py文件

    转自:https://blog.csdn.net/l8947943/article/details/79874180 问题描述: 如图:同目录下明明存在相应文件,在导入时却出现带有红色波浪线,说没有相 ...

  6. 《Head first设计模式》之迭代器模式

    迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 爆炸性新闻:对象村餐厅和对象村煎饼屋合并了! 真是个好消息!现在我们可以在同一个地方,享用煎饼屋美味的煎饼早餐,和好吃 ...

  7. vue hash模式下微信分享后打开首页,三种完美解决方案

    微信分享功能给我们带来了很大的便利,使得基于微信开发出来的 H5 页面可以很好的通过微信平台进行传播.所以呢,基本上每个基于微信开发的 H5 都会集成微信分享功能.但是,前几天在对接微信分享 API ...

  8. 《自拍教程5》Python自动化测试学习思路

    前提:熟悉测试业务及流程 任何Python自动化测试的前提,都是必须先熟悉实际测试业务. 任何脱离实际测试业务的自动化都是噱头且无实际意义! 测试的基本流程基本是: 测试需求分析,测试用例设计与评审, ...

  9. 01_TypeScript介绍安装

    1.介绍 TypeScript 是由微软开发得一款开源得编程语言:是JavaScript得超级,遵循ES6,ES5规范:更适合开发大型企业项目. 2.安装 npm install -g typesri ...

  10. 配置ASA防火墙 远程管理方式

          受不了,asa和思科路由器 系统命令不一致,这一篇专门来写asa.      先看下版本 asa825# show version      Cisco Adaptive Security ...