改变docker容器存储配置

本文主要针对centOS7的docker存储插件devicemapper。

操作流程

操作之前将容器或镜像保存下来,(e.g.)如下:

1
2
3
4
# save
docker save ceph/daemon > ceph.tar
# load
docker load --input ceph.tar

停止docker服务

1
service docker stop

删除docker所有的存储镜像和容器

1
rm -rf /var/lib/docker

创建LVM物理卷,如果出现warning删除ext4标签

1
2
mkfs.ext4 /dev/sdb
pvcreate /dev/sdb

创建新的卷组vg-docker

1
vgcreate vg-docker /dev/sdb

在vg-docker中创建data逻辑卷和metadata逻辑卷,用于docker容器和镜像存储(大小根据自己实际设置)

1
2
lvcreate -L 90G -n data vg-docker
lvcreate -L 4G -n metadata vg-docker

在/usr/lib/systemd/system/docker.service的/usr/bin/docker daemon -H fd://后面添加如下内容指定docker的数据池和元数据池

1
--storage-driver=devicemapper --storage-opt dm.basesize=90G --storage-opt dm.datadev=/dev/vg-docker/data --storage-opt dm.metadatadev=/dev/vg-docker/metadata

dm.basesize表示每个容器运行时配置的容量大小。

重启docker服务

1
2
systemctl daemon_reload
service docker restart

参考文档

Docker and the Device Mapper storage driver