Docker镜像导致centos-root根分区容量爆满

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker镜像导致centos-root根分区容量爆满相关的知识,希望对你有一定的参考价值。

当虚拟机服务器运行Docker久了后,发现Docker的文件越来越大,某天发现此台机上的数据库访问不了了,再重启数据库等日志,提示空间不足,查看磁盘空间:

技术分享图片

  root分区满载啊,前段时间还有不少空间的,查下什么大文件内容占了空间。

find / -xdev -size +100M -exec ls -l {} \;

 技术分享图片

最近用的docker越来越大 才导致磁盘满了。

那下面要么清理docker,要么扩展磁盘。

两步都做吧,先简单清理docker,或许可以清理一些空间出来。

 

先 docker images -a 看一下是不是有过多的 <none> 的镜像了,其中有一部分是这类镜像。
# 删除所有未打标签的镜像.

docker rmi $(docker images -aq -f "dangling=true")

容器的内容也是在存储层的。可以 docker ps -a 看一下是不是有很多之前的容器没有删掉的,可以 docker rm $(docker ps -aq -f "dangling=true") 来删除。

垃圾回收

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc:ro spotify/docker-gc

有些容器明明stop了,但是它还是占着某些资源

docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }')

 

使用docker自带命令先清理一次。

docker system prune -a

技术分享图片

注意:

这可能会清除掉images,慎用。

再进行了上面对docker处理后,下面对磁盘扩容。

扩展根分区

VMware分配空间

选中虚拟机->虚拟机设置->添加=》硬盘->添加15G,可以看看第一张图的硬盘1是SCSI(0:0)新加的硬盘2是SCSI(0:1)

先看一下现有磁盘情况:

# fdisk -l
技术分享图片

 

对新磁盘进行分区:

# fdisk /dev/sdb

在fdisk的交互模式中,依次输入:

n  --创建新分区
p  --创建主分区
<回车>  --默认分区编号
<回车>  --默认起始扇区位置。
<回车>  --默认结束扇区位置。
w  --写入分区表

这样就把整个磁盘分成了一个区。

再看一下现有磁盘情况:

# fdisk -l

已经多出了一个新分区:

技术分享图片

将新分区用于扩展/root

先看一下卷分组:

# vgdisplay -v

技术分享图片

可以看到当前卷分组名为"centos_h32"。

为之前新增的分区创建物理卷:

# pvcreate /dev/sdb1

查看结果:

# pvdisplay

技术分享图片

扩展卷分组,"centos_h32"是vgdisplay命令查到的卷分组名:

# vgextend centos_h32 /dev/sdb1

提示成功扩展。

 技术分享图片

下面查看一下逻辑卷:

# lvdisplay

技术分享图片

可以看到/dev/centos_h32/root目前的LV Size是17.47GiB。

 

下面扩展逻辑卷/dev/centos_h32/root:

# lvextend -L +15G /dev/centos_h32/root

注:+15G是我们新增加的分区大小。

技术分享图片

扩展后,还要执行一步 将文件系统扩大:

# xfs_growfs /dev/centos_h32/root

扩展完成。

因为安装CentOS用的xfs分区,所以使用命令xfs_growfs扩展文件系统大小。否则的话使用resize2fs命令。
查看结果:

# df -Th

/root已经扩充到33GiB:

技术分享图片


以上是关于Docker镜像导致centos-root根分区容量爆满的主要内容,如果未能解决你的问题,请参考以下文章

centos使用lvm扩容根分区

调整home分区空间到根分区

分区错误,根分区满了,卸载home添加给根分区

centos7下在线扩容根分区

查看根分区大小,并取出根分区使用率赋值给root_disk变量。

解决docker数据文件过大导致根磁盘满的问题