Docker 启动抛出异常:设备空间不足

Error response from daemon: Cannot start container xxx: write /var/lib/docker/containers/xxxxx/hash281480960: no space left on device
Error: failed to start containers: [xxx]

1.开始排查:df -h

[root@iZbp13ks1ssZ root]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G   40G     0 100% /
tmpfs           7.8G     0  7.8G   0% /dev/shm
/dev/vdb1       493G  289G  179G  62% /mnt

如图系统盘40G被占用完,基本可以确定启动异常原因和系统盘有关系

2.继续排查:docker info

[root@iZbp13ks1ssevbZ bin]# docker info
Containers: 1
Images: 28
Storage Driver: devicemapper
 Pool Name: docker-252:1-787932-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 1.225 GB
 Data Space Total: 107.4 GB
 Data Space Available: 16.78 MB
 Metadata Space Used: 2.073 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 16.78 MB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.117-RHEL6 (2016-12-13)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 2.6.32-573.22.1.el6.x86_64
Operating System: <unknown>
CPUs: 8
Total Memory: 15.58 GiB
Name: iZbp13ks1ssevb4354g66kZ
ID: CYHH:DY6E:AMHX:YIR5:J4ZZ:NVPV:MRFI:REPX:CYOV:CAY6:PCU3:3ZTA

如图可以分析出可用磁盘容量 Data Space Available、 Metadata Space Available 仅剩 16.78 MB,所有导致没有足够的空间进行加载启动docker镜像。

3.解决办法

a.清理无效数据文件,释放磁盘空间(我这边采用的清除日志,大概35G日志)

  找到容器位置,查看容器下文件夹总大小,大概34G,很明显不正常

[root@iZbp13ks1ssevb4354g66kZ docker]# cd /var/lib/docker/containers/xxxxx/
[root@iZbp13ks1ssevb4354g66kZ xxxxx]# du -h
34G	.

 具体查看哪一个文件占用的较大空间

[root@iZbp13ks1ssevb4354g66kZ xxxxx]# ll -H
总用量 35472804
-rw------- 1 root root 36324085760 1月  10 10:07 xxxxx-json.log
-rw-r--r-- 1 root root           0 1月  10 10:20 config.json
-rw------- 1 root root           0 1月  10 10:18 hash021440780
-rw------- 1 root root           0 1月  10 10:20 hash281480960
-rw------- 1 root root           0 1月  10 10:10 hash330376280
-rw------- 1 root root           0 1月  10 10:13 hash415263050
-rw------- 1 root root           0 1月  10 10:19 hash741158942
-rw------- 1 root root           0 1月  10 10:09 hash834270948
-rw------- 1 root root          71 1月  10 10:09 hash942917046
-rw-r--r-- 1 root root         658 1月   7 09:16 hostconfig.json
-rw-r--r-- 1 root root          13 1月   7 09:16 hostname
-rw-r--r-- 1 root root         177 1月  10 10:20 hosts
-rw-r--r-- 1 root root           0 1月  10 10:09 resolv066146547
-rw-r--r-- 1 root root           0 1月  10 10:13 resolv093990945
-rw-r--r-- 1 root root           0 1月  10 10:09 resolv319454621
-rw-r--r-- 1 root root           0 1月  10 10:10 resolv568725975
-rw-r--r-- 1 root root           0 1月  10 10:18 resolv593039099
-rw-r--r-- 1 root root           0 1月  10 10:19 resolv620168933
-rw-r--r-- 1 root root           0 1月  10 10:20 resolv716462175
-rw-r--r-- 1 root root          86 1月   7 09:16 resolv.conf
-rw------- 1 root root          71 1月   7 09:16 resolv.conf.hash

最终定位到xxxxx-json.log文件,经 vi 查阅该日志可清除,rm 清除后 docker info

[root@iZbp13ks1ssevb4354g66kZ xxxxx]# docker info
Containers: 1
Images: 28
Storage Driver: devicemapper
 Pool Name: docker-252:1-787932-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 1.225 GB
 Data Space Total: 107.4 GB
 Data Space Available: 36.34 GB
 Metadata Space Used: 2.073 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.145 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.117-RHEL6 (2016-12-13)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 2.6.32-573.22.1.el6.x86_64
Operating System: <unknown>
CPUs: 8
Total Memory: 15.58 GiB
Name: iZbp13ks1ssevb4354g66kZ
ID: CYHH:DY6E:AMHX:YIR5:J4ZZ:NVPV:MRFI:REPX:CYOV:CAY6:PCU3:3ZTA

 如图可以磁盘可以空间为 36.34 GB,查看系统磁盘使用率 df -h

 

[root@iZbp13ks1ssevb4354g66kZ xxxxx]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G  5.5G   32G  15% /
tmpfs           7.8G     0  7.8G   0% /dev/shm
/dev/vdb1       493G  289G  179G  62% /mnt

 如图系统盘使用率达到15%,足够空间启动容器,docker start xxxxx 正常。

此方法比较low,但也是及时恢复系统的一个办法,系统恢复正常之后可再进行目录更换,增加磁盘空间等

b.修改docker配置文件,修改data路径

  待后续...

 

Logo

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

更多推荐