docker “no space left on device”问题定位解决

摘要:
当使用Docker在Paas环境中加载图像时,会出现以下问题。第一个反应是存储图像的磁盘上满是dockerinfo。查看docker的根路径。您可以看到它是/opt/docker:查看/opt/docker:从上面可以看到docker的磁盘未满。怀疑磁盘上已满inode。查看/opt的inode占用情况,发现inode已用于删除/opt占用的文件或目录。此问题是由程序错误引起的

在paas环境上使用docker加载镜像的时候出现了如下问题

docker “no space left on device”问题定位解决第1张

第一反应应该是存储镜像的路径磁盘满了

docker info查看docker的根路径,可以看到为/opt/docker:

docker “no space left on device”问题定位解决第2张

查看/opt/docker的磁盘占用率:

docker “no space left on device”问题定位解决第3张

从上述可知docker的磁盘并没有占用满,怀疑是inode占用满导致的,查看/opt的inode占用率,发现inode用尽

docker “no space left on device”问题定位解决第4张

删除/opt占用过多的文件或目录即可,本问题是因为程序错误,导致在pod的kubernetes.io~secret下面创建了195w多个空目录,导致inode被占用完

注:

使用ls -lR DIR_NAME | grep "^-"|wc -l可以查看目录DIR_NAME中的文件数

使用ls -lR DIR_NAME | grep "^d"|wc -l可以查看目录DIR_NAME中的目录数

在docker中有一个重要的存储器,以centos系统为例,使用docker info可以看到docker的存储系统类型为devicemapper,docker使用thinpool特性来存储容器镜像。

docker “no space left on device”问题定位解决第5张

也可以通过/etc/docker/daemon.json查看docker的存储设备:

docker “no space left on device”问题定位解决第6张

可以在/dev/mapper中查看挂载的实际设备

/var/lib/docker/devicemapper/metadata/包含了devicemapper本身配置以及镜像和容器层相关的信息,格式为json。

/var/lib/devicemapper/mnt/包含了容器和镜像挂载的点(可以使用lsblk查看),镜像挂载点为空,容器则包含了容器中的文件系统

docker “no space left on device”问题定位解决第7张

使用lvs -a可以查看当前存储设备的使用情况:

docker “no space left on device”问题定位解决第8张

使用lsblk可以查看当前设备的使用情况(可以使用vgdisplay --verbose来查看vg对应的lv设备):

docker “no space left on device”问题定位解决第9张

 参考:

https://blog.csdn.net/chengm8/article/details/49890261

https://docs.docker.com/storage/storagedriver/device-mapper-driver/#image-and-container-layers-on-disk

免责声明:文章转载自《docker “no space left on device”问题定位解决》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python+selenium十四:xpath和contains模糊匹配Delphi2009初体验 语言篇 反射单元ObjAuto的加强下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用Docker搭建MySQL主从复制(一主一从)

简介 因为个人资源有限,手里没有太多的服务器,只能通过docker来进行mysql的主从搭建。原理基本上都是一致的,在实际生产中,也可以按照该方式进行搭建。如果对Docker还不是很了解,请移步Docker官网进行学习! 使用Docker搭建主从 使用Docker拉取MySQL镜像,使用5.7版本 我们可以先使用search命令查询一下mysql镜像,...

qcow2、raw、vmdk等镜像格式

转自http://www.prajnagarden.com/?p=248 http://blog.csdn.net/starshine/article/details/8179483 转者言:对prajna 的文字风格比较喜欢,同志们要在写技术文章时充分发扬喜笑怒骂皆文字的风格! --------------------------------------...

(九)Docker-PS 详解

1. 作用 查看 docker 容器 2. 基本语法 docker ps [OPTIONS] OPTIONS说明: -a :显示所有的容器,包括未运行的。 -f :根据条件过滤显示的内容。 --format :指定返回值的模板文件。 -l :显示最近创建的容器。 -n :列出最近创建的n个容器。 --no-trunc :不截断输出。 -q :...

简述Docker镜像、容器、仓库概念

Docker镜像 Docker镜像(Image)类似于虚拟机的镜像,可以将他理解为一个面向Docker引擎的只读模板,包含了文件系统。 例如:一个镜像可以完全包含了Ubuntu操作系统环境,可以把它称作一个Ubuntu镜像。镜像也可以安装了Apache应用程序(或其他软件),可以把它称为一个Apache镜像。 镜像是创建Docker容器的基础,通过版本管理...

如何修改WinPE Boot的.wim镜像文件

1. 使用imagex /apply或imagex /mountrw将WIM镜像文件mount到某个文件夹,假设为d: mpwinpe_x86mount.  例: imagex /mountrw winpe.wim 1 d: mpwinpe_x86mount 2. 使用peimg /list d: mpwinpe_x86mount查看已经安装的pa...

Docker容器日志查看与清理(亲测有效)

 https://blog.csdn.net/yjk13703623757/article/details/80283729 1. 问题 docker容器日志导致主机磁盘空间满了。docker logs -f container_name噼里啪啦一大堆,很占用空间,不用的日志可以清理掉了。  2. 解决方法 2.1 找出Docker容器日志 在...