服务通过docker部署,平时启动是好好的,突然有一天,更新服务时报错
INTERNAL ERROR: cannot create temporary directory!
查错步骤:
执行 df -h 命令,查看磁盘利用率,发现/dev/mapper/centos-root空间大小为50G,使用率为100%。
解决方法有两种,如下:
方法一:
操作步骤:执行 sudo du -sh * 命令查看具体哪一目录下磁盘使用过高,找到删掉没用的,就不报错了。
举例:我的直接问题原因是有一个后台服务,输出的日志没有按log4j规范编写代码,导致打印日志太多,使得并不富裕的服务器磁盘空间雪上加霜迅速被占满了,因为很清楚是哪个服务,所以我找到这个服务的容器id,把这个容器直接删除重建,这样就可以把那些占地方的日志也删掉,再重建服务容器就能腾出空间了。
因为是docker容器问题,所以我的操作:
首先:cd /var/lib/docker/containers
其次,统计当前目录各文件夹大小:du -sh ./*
(查找docker中哪个容器占用资源较大)
此时可以得到占用最大磁盘空间的容器ID是:333045b75a81d465eed6882a05aafa263d8be0f26819c5582545a5e2d03a7849
如果你想知道这个容器具体是什么,可以使用以下命令查找(后面输入你的容器ID):
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "333045b75a81d465eed6882a05aafa263d8be0f26819c5582545a5e2d03a7849"
然后通过:docker rm -f <containerid> --删除容器
如果容器太大,这个命令执行会很慢,此时可以通过可视化工具直接进入/var/lib/docker/containers目录去手动删除,然后重启docker,最初的问题可以暂时解决
方法二:
linux系统增加根目录磁盘空间操作步骤--VMware 虚拟机扩展空间后续操作
若大家的磁盘空间很小,不能满足日常服务所需,就需要扩展对应的磁盘空间。
附上非常好用的说明步骤:VMware 虚拟机(linux)增加根目录磁盘空间_我成长的地方的技术博客_51CTO博客
在最后,执行扩容多少G后,因文件系统不同,执行命令可能会不同,若按以上博客步骤实行失败,可执行下面这条命令:
xfs_growfs /dev/mapper/centos-root
再执行df -h 可以看到已经扩容成功
补充知识点:
1、查找和删除容器命令
docker ps -aqf name=xxxx(容器名称) --查找对应容器id
docker rm -f <containerid> --删除容器