在使用docker过程中,例如采用dockerfile构建镜像时,出现the device has no space to left. 提示设备空间不足,或者 docker commit 提交容器保存镜像时,提示空间不足,往往时由于生成的目标镜像的尺寸大于docker默认配置的值。

如何获取Docker默认配置空间信息?

docker system info 

调用docker  system info  或者 docker info ,  经过测试,较高版本的docker 才输出该些信息。例如我电脑安装的时docker-ce 19.03

Storage Driver: 存储驱动类型  devicemapper

pool name:  此驱动的程序池名称

pool block size: 程序池的块大小,仅仅在创建时,指定。

Base device size: 一个镜像容器的最大空间, 很多是由无法创建镜像,往往是由于空间限制导致。

Data file:  存储驱动的 块设备文件

Metadata file:  存储启动,块设备文件的元数据

Data space used:  当前使用的空间

Data space total:   总共分配的空间

Data space available: 当前可用空间,如果是循环设备,报告实际底层文件系统剩余可用空间。

Metadata space used: 当前元数据  已使用的空间

Metadata space total:  总的元数据空间

Metadata space available 当前可用元数据空间

Backing filesystem: 支持的文件系统

Udev Sync Supported:是否支持 用户设备  同步, 默认为true

Data loop file: 循环设备 关联文件

Metadata loop file: 元数据设备 关联的文件

Thin pool Mininum Free space: 精简程序池的最小空间,精简程序池的设计目的,就是为实现docker开箱即用,快速启动的目的,设计到OS存储驱动层面,这里不做详细介绍。

二. 配置docker的存储空间

部分场景下,我们的镜像可能超过默认配置的空间,那么我们需要重新修改docker的空间配置,可配置通过docker 守护进程参数文件 /etc/docker/daemon.json.

dm.loopdatasize 总的空间大小

dm.basesize  一个镜像文件最大空间

dm.loopmetadatasize 元数据的总空间

一般配置这三个参数即可。

 

然后重启 docker  使参数生效。

Systemctl daemon-reload &&  systemctl restart docker

进入到目录:home/dockerHome/devicemapper/devicemapper  验证

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐