centos一键清理磁盘空间_如何清理 Docker 占用的磁盘空间

49748f02e9e1fea92c06435caa8e2795.png

Docker 很占用空间,每当我们运行容器、拉取镜像、部署应用、构建自己的镜像时,我们的磁盘空间会被大量占用。

如果你也被这个问题所困扰,咱们就一起看一下 Docker 是如何使用磁盘空间的,以及如何回收。

docker 占用的空间可以通过下面的命令查看:

$ docker system df
5f17cfeb0ca3846bc502b31c85d5c658.png

TYPE 列出了docker 使用磁盘的 4 种类型:

  • Images:所有镜像占用的空间,包括拉取下来的镜像,和本地构建的。
  • Containers:运行的容器占用的空间,表示每个容器的读写层的空间。
  • Local Volumes:容器挂载本地数据卷的空间。
  • Build Cache:镜像构建过程中产生的缓存空间(只有在使用 BuildKit 时才有,Docker 18.09 以后可用)。

最后的 RECLAIMABLE 是可回收大小。

下面就分别了解一下这几个类型。

容器的磁盘占用

每次创建一个容器时,都会有一些文件和目录被创建,例如:

  • /var/lib/docker/containers/ID 目录,如果容器使用了默认的日志模式,他的所有日志都会以JSON形式保存到此目录下。
  • /var/lib/docker/overlay2 目录下含有容器的读写层,如果容器使用自己的文件系统保存了数据,那么就会写到此目录下。

现在我们从一个完全干净的系统开始,假设 docker 刚刚安装:

a498868a9a491f6d88ef5284d2d112d7.png

首先,我们启动一个 NGINX 容器:

16fe3fb947b13d5a925eda82cb1fa94a.png

现在运行 df 命令后,就会看到:

  • 一个镜像,126MB
  • 一个容器
2aada38fdb8657b3fc1df350fb1e5f0f.png

此时没有可回收空间,因为容器在运行,镜像正被使用。

现在,我们在容器内创建一个 100MB 的空文件:

d276808b8f7d613a7135f5d8de941f9e.png
$ docker exec -ti www     dd if=/dev/zero of=test.img bs=1024 count=0 seek=$[1024*100]

再次查看空间:

ef6a89a61447b1b9106ca0ce6bb00038.png

可以看到容器占用的空间增加了,这个文件保存在本机哪里呢?

37f5e6be282ef2fa6562b4fa7691e848.png

和上面说的一样,是保存在容器的读写层。

当停止容器后,容器占用的空间就会变为可回收的:

098453d16390681c3a6430ac54e0c82f.png

如何回收呢?删除容器时会删除其关联的读写层占用的空间。

也可以一键删除所有已经停止的容器:

$ docker container prune
0b31d920b5180d6f25bc7e35a8484191.png

删除容器后,镜像也可以回收了:

9b3d46be4d7ca9fe942c2bae6ab69ad0.png

上面的 docker container prune 命令是删除停止的容器,如果想删除所有容器(包括停止的、正在运行的),可以使用下面这2个命令:

$ docker rm -f $(docker ps -aq)$ docker container rm -f $(docker container ls -aq)

镜像的磁盘占用

有一些镜像是隐形的:

  • 子镜像,就是被其他镜像引用的中间镜像,不能被删除。
  • 悬挂状态的镜像,就是不会再被使用的镜像,可以被删除。

下面的命令列出所有悬挂状态的镜像:

$ docker image ls -f dangling=true
083abd2bbe526a786cf808560a80bf0e.png

删除这类镜像:

$ docker image rm $(docker image ls -f dangling=true -q)

或者:

$ docker image prune
f991498b3c52dd41d39898edbe5116ca.png

如果想删除所有镜像,可以使用下面的命令:

$ docker image rm $(docker image ls -q)

注意,正在被容器使用的镜像是不能被删除的。

数据卷的磁盘占用

数据卷是容器自身文件体统之外的数据存储。

例如容器中的应用有上传图片的功能,上传之后肯定不能保存在容器内部,因为容器内部的数据会随着容器的死掉而被删除,所以,这些图片要保存在容器之外,也就是数据卷。

比如我们运行了一个 MongoDB 容器做测试,导入了很多测试数据,这些数据就不是在容器内部的,是在数据卷中,因为 MongoDB 的 Dockerfile 中使用了数据卷。

测试完成后,删除了这个 MongoDB 容器,但测试数据还在,没被删除。

删除不再使用的数据卷:

$ docker volume rm $(docker volume ls -q)

或者:

$ docker volume prune
954a7881c13f5e3eb6525a34002752b4.png

Build Cache 的磁盘占用

Docker 18.09 引入了 BuildKit,提升了构建过程的性能、安全、存储管理等能力。

删除 build cache 可以使用命令:

$ docker builder prune
d2b9905469432628ef982fc018cc1193.png

一键清理

通过上面的说明,我们知道了像容器、镜像、数据卷都提供了 prune这个子命令,帮助我们回收空间。

其实,docker 系统层面也有 prune 这个子命令,可以一键清理没用的空间:

$ docker system prune
c3531ad8f83c4b9b83ae66bf2cf084c4.png

定期执行这个命令是个好习惯。

翻译整理自:

https://medium.com/better-programming/docker-tips-clean-up-your-local-machine-35f370a01a78

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机基础应用形考5access答案,计算机应用基础形考作业五答案.doc

1 对关系模型叙述错误的是()。选择一项:用二维表表示关系模型是其一大特点建立在严格的数学理论,集合论和谓词演算公式的基础之上微机 DBMS 绝大部分采取关系数据模型不具有连接操作的 DBMS 也可以是关系数据库系统正确答案是:建立在严格的数…

mongodb dsl_具有Java DSL的Spring Integration MongoDB适配器

mongodb dsl1引言 这篇文章解释了如何使用Spring Integration从MongoDB数据库中保存和检索实体。 为了完成此任务,我们将使用Java DSL配置扩展来配置入站和出站MongoDB通道适配器。 例如,我们将构建一个应用程序,使您可以将订单写入MongoDB存…

python工作方法_用python开始一天工作

run1pm.py 全部源码 python #!D:\appsoft\python\python.exe # -* - coding: UTF-8 -* - import os import sys import time # # 启动: # 1)run1pmEn.py # 退出: # 1) run1pmEn.py quit # # _tARG1start # start quit if len(sys.argv)>1 and sys.argv[1]quit: _tARG1sys.…

Oracle 数据库中较为复杂或典型的 SQL 语句的解读

文章目录批量生成 SQL 语句/拼接字符串多表关联查询 where 子句示例(一)示例(二)普通的表间内连接查询语句关键字 distinct 用法说明Oracle 数据库的分组排序查询Oracle 数据库 cast 函数Oracle 数据库 sum 函数的高级用法Oracle…

html ios视频播放器,良心推荐!iOS端的视频播放应用

不知道大家还记不记得之前小编我推荐的最好用的iOS音乐播放器,如果没看过,可以点击这里。既然之前介绍了一款iOS端的音乐播放器给大家,那么今天就介绍一款iOS端十分好用的万能解码的视频播放器。使用iPhone的用户都明白,iPhone自带…

私有方法与静态私有方法_每个私有静态方法都是新类的候选人

私有方法与静态私有方法您是否有私有的静态方法来帮助您将算法分解为更小的部分? 我做。 每当我编写一个新方法时,我就会意识到它可以是一个新类。 当然,我不会从所有课程中选修课程,但这必须是目标。 私有静态方法不可重用&#…

c语言插入排序_还有这种操作?C语言插入排序算法,一点就透

插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。更多C/C资料群文件:569268376直接插入排序是插入排序算法中的一种,采用…

Mac 如何操控远程的 Windows 电脑

文章目录使用 Remote Desktop Connection for mac 客户端第 1 步:Windows 电脑进行远程设置第 2 步:Windows 电脑设置管理员账号和密码第 3 步:获取 Windows 电脑的 IP 地址第 4 步:Mac 电脑安装远程桌面连接客户端第 5 步&#x…

map iterator_一个简单的Map Iterator性能测试

map iteratorJava Map性能有很多方面可以衡量,但是关键的一个是简单的单线程扫描。 这是一些针对Iterators和Java 8 Map.forEach()简单测试代码,以及一些图形结果。 1.性能测试困难 性能测试是一项非常困难的工作,精确的可重复性测试需要Jav…

学生用计算机中sto,STO 文件扩展名: 它是什么以及如何打开它?

STO 疑难解答常见的 STO 打开问题Ecru Software PRO100 不存在你尝试加载 STO 文件并收到错误,例如 “%%os%% 无法打开 STO 文件扩展名”。 如果是这种情况,通常是因为 你的计算机上没有安装 Ecru Software PRO100 for %%os%%。 由于您的操作系统不知道如…

MacBook 使用 Loopback 录屏和录音频(MacBook 录屏教程/录视频教程/Loopback 教程)

文章目录一、下载软体二、Loopback 界面介绍三、设置系统的声音输入/输出设备(一)设置声音输入设备(二)设置声音输出设备四、录制程序中选择声音输入设备五、开始录制一、下载软体 在網路上可以找到破解版的軟體 Loopback 二、L…

惠普照片打印软件_被看错的打印机?原来打印机还可以这么玩

孩提时代,经常弄丢试卷的小值君曾频繁地与打印店打交道,那是我最早接触打印机的时候。白驹过隙,时至当下,打印设备已然成为家庭不可或缺的部分。印象中,打印机要不就是打打文档,要不就是打打照片&#xff0…

dagger2 注入_使用Dagger 2在GWT中进行依赖注入

dagger2 注入依赖注入是一种软件开发概念,其中为对象提供了创建所需的所有对象或值。 GWT用户已经熟悉GIN,但已经不推荐使用此工具,因此不再支持它,因此使用GIN的应用程序当前确实需要告别。 Dagger是GWT的新依赖注入框架。 对于那…

oracle创建一个表同已存在表结构一样

oracle创建一个表同已存在表结构一样(或者同时将数据导入) –只是建立ta表,与emp表结构相同,并不添加数据 –这种构造与现存表相同结构的表,是不会将comment带过来的 create table ta as select * from scott.emp wh…

周敏教授计算机编码与密码学,中国科学院计算机与控制学院博士生导师:张玉清教授...

张玉清 男 博导 信息科学与工程学院电子邮件:zhangyqgucas.ac.cn通信地址:北京石景山区玉泉路19号甲邮政编码:100049部门/实验室:计算机与控制学院职务: 教授,副院长电子邮箱: zhangyqucas.ac.cn研究方向:计算机网络&a…

戴尔G3笔记本使用U盘重装操作系统

戴尔G3笔记本 下载安装大白菜U盘启动盘制作软件根据使用说明完成启动盘制作下载操作系统ISO文件重启电脑,连续按F12,打开如下界面后选择红色线框选项: 进入PE系统界面,打开【大白菜】,看到如下界面:

华南理工网络教育计算机概论,2020年《计算机概论》平时作业华南理工网络教育学院.pdf...

计算机概论平时作业1. 简 述人工智能答:人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支, 它企图了解智能的实质, 并生产出一种新的能以人类智能相似的方…

python合并csv文件_Python学习——pandas 合并csv文件

import pandas as pd import os import re import numpy as np Folder_Path rC:/Users/Cable-Ching\Desktop/New folder/New folder # 要拼接的文件夹及其完整路径,注意不要包含中文 SaveFile_Path rC:/Users/Cable-Ching\Desktop/New folder/New folder # 拼接后…

ebook_[EBOOK]十大Java性能问题

ebook有兴趣了解更多吗? 然后,您应该在此处下载相关的电子书。 Java中的大多数性能问题都可归因于少数根本原因。 当然,偶尔会有一些奇怪的极端情况突然出现,并在应用程序中造成严重破坏,但是在大多数情况下&#xff…

macOS下的视频格式转换器

1-Click Video Converter Total Video Converter Pro