项目一个tar包,很大,10多个g,这个docker镜像导出的时候,会报:no space left on devi
一般报这个错的原因有三个,1,分区本身不够;2,碎片文件太多,分区够,但是inode占满了;3,就是docker本身容器的限制。
首先看第一个问题,
[root@localhost home]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 27G 24G 54% /
devtmpfs 911M 0 911M 0% /dev
tmpfs 921M 0 921M 0% /dev/shm
tmpfs 921M 90M 831M 10% /run
tmpfs 921M 0 921M 0% /sys/fs/cgroup
/dev/mapper/centos-home 148G 11G 137G 8% /home
/dev/sda1 497M 124M 373M 25% /boot
tmpfs 185M 0 185M 0% /run/user/1004
tmpfs 185M 0 185M 0% /run/user/992
tmpfs 185M 0 185M 0% /run/user/996
tmpfs 185M 0 185M 0% /run/user/0
根分区本身是够的,
第二个问题:
[root@localhost home]# df -ih
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/mapper/centos-root 50M 328K 50M 1% /
devtmpfs 228K 348 228K 1% /dev
tmpfs 231K 1 231K 1% /dev/shm
tmpfs 231K 572 230K 1% /run
tmpfs 231K 13 231K 1% /sys/fs/cgroup
/dev/mapper/centos-home 148M 33 148M 1% /home
/dev/sda1 500K 330 500K 1% /boot
tmpfs 231K 1 231K 1% /run/user/1004
tmpfs 231K 1 231K 1% /run/user/992
tmpfs 231K 1 231K 1% /run/user/996
tmpfs 231K 1 231K 1% /run/user/0
inode的使用很低,本身也没问题,最后查看docker的信息:
[root@localhost home]# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 1.12.6
Storage Driver: devicemapper
Pool Name: docker-253:0-67125080-pool
Pool Blocksize: 65.54 kB
Base Device Size: 10.74 GB#这个就是限制,容器根分区的大小!
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 11.8 MB
Data Space Total: 107.4 GB
Data Space Available: 36.95 GB
Metadata Space Used: 581.6 kB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.147 GB
Thin Pool Minimum Free Space: 10.74 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
docker的版本是1.12,修改容器根分区的大小即可:
dm.loopdatasize=100G是指存放数据的数据库空间为100g,默认是100g
dm.loopmetadatasize=10G是存放Metadata数据空间为10g,默认是2g
dm.fs=xft是指容器磁盘分区为xft
dm.basesize=20G是指容器根分区默认为20g,默认是10g
vi /etc/sysconfig/docker-storage
修改下面参数即可
DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper --storage-opt dm.loopdatasize=100G --storage-opt dm.loopmetadatasize=10G --storage-opt dm.fs=xfs --storage-opt dm.basesize=20G"
最后重启容器,问题解决