1、docker部署后修改数据存放目录,默认存放到/var/lib/docker下面,修改到一个大的空间目录下面。参考我的另外一篇博客:https://www.cnblogs.com/cuishuai/p/9485939.html

2、docker空间占用分析

通常使用docker部署服务,使用一段时间后发现磁盘空间占用的很快,经排查发现占用最高的就是docker,发现一些比较老的image和废弃不用的container的volume没有清理造成的。由于只关注了docker的发布,却忽略了docker清理工作。长此以往容易导致服务器磁盘被塞满,从而部署的docker服务不可用,后果非常严重。所以就需要定期的清理一些没有用的过期资源。

docker提供了一个cli命令可以方便的查看docker具体咋用磁盘情况:

#docker system df

可以看到,docker system df 命令给出了images、containers、volumes、build cache占用磁盘的大小。最后一列RECLAIMABLE,表示可回收的空间大小。

使用docker  system df -v,可以显示更详细的信息:

知道空间占用情况了,结下来就是做清理工作。

docker提供了docker system  prune来清理停掉的container、悬挂的image(没有tag)、没有使用的network、数据卷。

当然有个-a参数,可以清理所有的东西,包括没有使用的镜像(谨慎使用)。:

使用清理命令之前,一定要先确定container、image是否可以被删除。

参考:https://docs.docker.com/engine/reference/commandline/system_prune/

根据时间和label过滤。

3、感觉这种方式有的时候不能满足需求,不是很灵活,所以写了一个脚本用来清理镜像:

cat dockerImageClean.sh

#!/bin/bash
# docker clean
tp=`df -h | grep \/dev\/vdb | awk '{print $5}' | tr -d %` t1=`docker images | grep -E "10.10.*sensors-log" |awk 'NR > 4 {printf "%s\n",$3}'`
t2=`docker images | grep -E "10.10.*satrun " |awk 'NR > 4 {printf "%s\n",$3}'` deleteImage() {
if [ $tp -ge 5 ];then
for i in $
do
docker rmi -f $i
#echo $i
done
fi
} #delete sensors-log and sensors-logagent
for i in $t1
do
deleteImage $i
done #delete saturn
for j in $t2
do
deleteImage $j
done

磁盘使用率超过50%后,保留最新的5个镜像,其他的都删掉。

docker空间管理之清理磁盘占用的更多相关文章

  1. Docker磁盘空间分析与清理

    首先使用du命令逐层分析docker磁盘的使用情况: (base) [root@openvino docker]# du -h --max-depth=1 | sort 0 ./containerd ...

  2. Linux磁盘空间分析及清理(df、du、rm)

    1.df磁盘空间查看 df可以查看一级文件夹大小.使用比例.档案系统及其挂入点. [root@oms ~]# df -Th Filesystem Type Size Used Avail Use% M ...

  3. Linux清理磁盘空间

    1.首先确定是否是磁盘满了 命令:   df -h 参数说明: -a:列出所有的文件系统,包括系统特有的/proc等文件系统 -k:以KB的容量显示各文件系统 -m:以MB的容量显示各文件系统 -h: ...

  4. 【Linux】linux之如何清理磁盘空间

    相关命令: 1.查询磁盘空间占用情况df -h2.进入根目录,查询大文件与目录 cd /du -sh * | sort -n 查看上GB的目录并且排序,可以用这个命令du -h --max-depth ...

  5. Jenkins遇到问题二:Jenkins服务器磁盘空间管理策略

    Jenkins在帮助我们自动化构建服务的同时也在消耗服务器的磁盘空间,试想如果构建的项目个数很多,而Jenkins 服务器磁盘空间又不是非常大的话,每隔一段时间磁盘空间就会爆满导致Jenkins出现磁 ...

  6. CentOS7清理磁盘空间

    1 首先查询磁盘空间占用情况. 发现/根目录下面磁盘占用百分之一百 df -ah 2 进入根目录,查询大文件与目录 cd /du -sh * | sort -n 查看上GB的目录并且排序,可以用这个命 ...

  7. [自学]Docker system 命令 查看docker镜像磁盘占用情况 Docker volume 相关

    内容From https://docs.docker.com/engine/reference/commandline/system_df/ docker的image和docker的container ...

  8. 【linux】linux磁盘空间 目录查看清理 和 文件查看清理

    =========================大目录排查============================= 一.首先查看磁盘挂载,磁盘空间使用情况 1.进入根路径 cd / 2.查看磁盘挂 ...

  9. 004.Docker镜像管理

    一 镜像基本操作 镜像是一个包含程序运行必要依赖环境和代码的只读文件,其本质是磁盘上一系列文件的集合.它采用分层的文件系统,将每一次改变以读写层的形式增加到原来的只读文件上.镜像是容器运行的基石. 1 ...

随机推荐

  1. Hdu1151 Air Raid(最小覆盖路径)

    Air Raid Problem Description Consider a town where all the streets are one-way and each street leads ...

  2. letcode code]Maximum Subarray

    1 题目: Find the contiguous subarray within an array (containing at least one number) which has the la ...

  3. python threading模块

    #coding=utf-8 import threading from time import ctime,sleep def music(func): for i in range(2): prin ...

  4. .net core部署到linux可能碰到的问题

    缺少icu库以独立部署 (SCD)的方式发包,运行时报错错误信息:FailFast: Couldn't find a valid ICU package installed on the system ...

  5. C# DataGridView中单元格Cell改变事件

    DataGridView控件中的各种事件都无法直接响应Cell中内容的变化,包括KeyPress等事件,可以采用下面方法 private void dataGridViewBarcode_Editin ...

  6. FluentAPI详细用法

    设置主键 modelBuilder.Entity<x>().HasKey(t => t.Name); 设置联合主键 modelBuilder.Entity<x>().Ha ...

  7. Android 四大组件之" ContentProvider "

    前言 ContentProvider作为Android的四大组件之一,是属于需要掌握的基础知识,可能在我们的应用中,对于Activity和Service这两个组件用的很常见,了解的也很多,但是对Con ...

  8. ST表的原理及其实现

    ST表类似树状数组,线段树这两种算法,是一种用于解决RMQ(Range Minimum/Maximum Query,即区间最值查询)问题的离线算法 与线段树相比,预处理复杂度同为O(nlogn),查询 ...

  9. Android根据字符串型的资源名获取对应资源id

    有时候我们想动态的根据一个字符串资源名获得到对应的资源id,如根据不同的图片名称获得对应的图片,此时就应该考虑如何实现. 大家知道,在编译Android工程时,系统会自动生成一个静态资源类R,里面根据 ...

  10. 基于cytoscape.js 、 d3.js实现的关系图谱初级版本

    前面的文章已经介绍了cytoscape.js . d3.js的安装及简单demo,现在展示从html页面转移到vue项目下的最初版的demo 效果图: 代码如下: <template> & ...