在早一些的centos版本中,docker 默认是使用 loop-lvm挂载docker相关的文件,这种方式性能差且不适合生产环境,在本文中,讲述的是手工配置docker的storeage driver的方法。请注意,以下操作会干掉你的全部镜像和全部容器
前提
首先确认,当前docker运行的环境。在shell输入
docker info
如果看到 Data file: /dev/loop0 字样,就说明需要调整。
较早的版本(1.13)的storage driver特性图
而在新版本中,则是推荐使用overlay2(如果是红帽系列,注意检查自己的xfs文件系统d_type选项)
修改配置
如果你的机器没有配置lvm,没有vg,需要先新建vg,如果已经有了,则将现有的volume group扩容,在下面的脚本中, /dev/sdb是我信硬盘,vg_sys是我原来lvm的volume group 名字
vg扩容
1 | pvcreate /dev/sdb |
禁用docker-storage-setup.service 服务
1 | systemctl mask docker-storage-setup.service |
创建 lv
1 |
|
应用lv设置
1 | cat <<EOF > /etc/lvm/profile/vg_sys-thinpool.profile |
修改docker启动参数
1 | cat <<EOF >/etc/docker/daemon.json |
/usr/lib/systemd/system/docker.service
注释掉
#wants=docker-storage-setup.service
修改/etc/sysconfig/docker-storage,因为存储的配置我们放到json里去了
DOCKER_STORAGE_OPTIONS=””
数据移走,如果配置有问题,则把上面的daemon.json回复原状,把文件在弄回来1
2$ mkdir /var/lib/docker.bk
$ mv /var/lib/docker/* /var/lib/docker.bk
启动docker
systemctl start docker