作者:张心虚要加油 | 来源:互联网 | 2024-11-05 17:14
在Docker中,默认情况下,镜像和容器数据存储在`/var/lib/docker`目录下,使用loop设备进行管理。然而,当根分区空间不足时(例如CentOS7默认安装仅有50GB),可能会导致Docker守护进程启动失败,因为UUID与存储的UUID不匹配。为解决这一问题,可以考虑扩展根分区或更改Docker的数据存储路径,以确保有足够的空间来支持Docker的正常运行。
Docker 默认使用loop设备存储镜像。使用/var/lib/docker存储。但是当根分区不够大的时候(Centos7默认安装只有50G),那就麻烦了。
这里提供下修改方法(以centos7操作系统为例):
1. systemctl stop docker
2. mount /dev/sdb1 /tmp
3. cp -arf /var/lib/docker/* /tmp
4. rm -rf /var/lib/docker
5. umount /tmp; mount /dev/sdb1 /var/lib/docker
6. systemctl start docker
如果执行第六步骤的时候报错:
Nov 03 15:35:47 master-57 dockerd[11586]: time="2016-11-03T15:35:47.950627346+08:00" level=error msg="[graphdriver] prior storage driver \"devicemapper\" failed: devmapper: Base Device UUID and Filesystem verification failed: devmapper:Current Base Device UUID:15b94e74-7712-44bc-b695-9c2c633b8b3a does not match with stored UUID:cba4570c-421a-4612-8030-e7734d6365c7. Possibly using a different thin pool than last invocation"
Nov 03 15:35:47 master-57 dockerd[11586]: time="2016-11-03T15:35:47.950782770+08:00" level=fatal msg="Error starting daemon: error initializing graphdriver: devmapper: Base Device UUID and Filesystem verification failed: devmapper: Current Base Device UUID:15b94e74-7712-44bc-b695-9c2c633b8b3a does not match with stored UUID:cba4570c-421a-4612-8030-e7734d6365c7. Possibly using a different thin pool than last invocation"
那么按照下列方法修改:
stored UUID 存储在 /var/lib/docker/devicemapper/metadata/deviceset-metadata 里面。 替换成Current Base Device UUID即可。