本机服务器环境是centos7 (vbox虚拟机)  安装docker后 运行正常,某次强行关闭了虚拟机 导致后续docker运行不起来,发现报错是与storage有关,所以网上查原因是说,docker原本是在ubuntu上开发的,ubuntu有 union fs这种支持,但是centos内核不支持,docker为了能够在centos下 开箱即用,所以弄了loop-lvm ,做到不用配置,但是这个东西官方明确说明 不建议在生成环境使用,所以通过网上查找资料,将loop-lvm  更换为direct-lvm


我给我的虚拟机 创建了一个虚拟硬盘 并分出了一个5G大小的分区 /dev/sdb2  先停止docker服务  systemctl stop docker.service


1、创建之前先将/dev/sdb2分区用fdiskid改为8elvm


2、创建pv (创建完毕 pvdisplay 能看到成果)

pvcreate /dev/sdb2


3、创建vg (从生成pv后的硬盘 创建类似一个虚拟硬盘的东西) 创建完毕 vgdisplay 能看到成果

vgcreate docker /dev/sdb2


4、创建两个lv(lv就是逻辑分区,上一步创建的vg 可以理解为一个虚拟硬盘,现在要对虚拟硬盘docker进行分区 lvdisplay 能看到分区结果

)

lvcreate --wipesignatures y -n thinpool -l 95%VG docker

lvcreate --wipesignatures y -n thinpoolmeta -l 1%VG docker


5、根据上一步的两个LV创建thin-pool(thinpool 是docker storage能用的)

lvconvert -y --zero n -c512K --thinpool docker/thinpool --poolmetadata docker/thinpoolmeta


6、配置thin-pool的自动扩展


修改lvm配置文件
vi/etc/lvm/profile/docker-thinpool.profile
如下:
activation{
   thin_pool_autoextend_threshold=80
   thin_pool_autoextend_percent=20
}


7、激活lv的配置文件

lvchange --metadataprofile docker-thinpool docker/thinpool


8、在docker启动配置文件
/etc/sysconfig/docker-storage
中添加或修改:
DOCKER_STORAGE_OPTIONS=--storage-driver devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=/dev/mapper/docker-thinpool --storage-opt dm.use_deferred_removal=true


9、启动docker

启动前 先删除  rm -rivf /var/lib/docker/*   (注意备份该文件夹 切记 该文件夹下有镜像 容器等文件 否则镜像需要重新构建或下载)

systemctl start docker.service


10、docker info 能查看到thinpool 已使用

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐