centos上安装的docker使用的后端存储为device-mapper(docker1.13为overlay),默认使用loopback的文件设备作为存储,在生产环节不推荐此种用法,需使用lvm卷作为docker后端存储,用以存放镜像及容器(容器与镜像的关系理解不同说法不同,作者这里为方便理解分开描述)的数据和元数据。下面是典型的docker存储示意图。
docker官方手册里明确提到用lvm块设备存储时推荐使用thinpool设备:
To make the best use of Docker with the devicemapper backend, you must have a recent version of LVM. Use lvm to create a thin pool.
关于thinpool设备的介绍可参考http://man7.org/linux/man-pages/man7/lvmthin.7.html
要使用lvm卷来作为docker存储,这需要在环境上用lvm创建一个thin pool,操作如下:
lvcreate -n pool0 -L 100G vgdocker 用于存储数据
lvcreate-n pool0meta -L 5G vgdocker 用于存储元数据vgdocker为单独创建的卷组,也可以使用已有的卷组&