CentOS
发布时间:2022-04-02 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Centos-7 + Docker-1.12 中 devicemapper + direct_lvm 的 Docker 存储配置,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
概述
应用背景: Docker最先就是跑在Ubuntu和Debian上的,使用的就是aufs存储器.因为docker越来越流行,许多公司希望在r
Hel上使用,但是上游内核中并没有包括aufs,所以r
Hel不能使用auf
s. 最终,开发者们开发了
一个新的后端存储引擎devicemapper,基于已有的Device Mapper技术,并且使docker 支持可插拔,现在全世界有很多真实案例在生产环境中使用d
应用背景:
Docker最先就是跑在Ubuntu和Debian上的,使用的就是aufs存储器.因为docker越来越流行,许多公司希望在r
Hel上使用,但是上游内核中并没有
包括aufs,所以r
Hel不能使用auf
s. 最终,开发者们开发了
一个新的后端存储引擎devicemapper,基于已有的Device Mapper技术,并且使docker
支持可插拔,现在全世界有很多真实案例在生产环境中使用devicemapper.
因为上述的原因,对于centos/r
Hel这类没
有相关驱动的系统,一般使用devicemapper驱动利用LVM的一些机制来模拟分层存储。这样的做法除了
性能比较差之外,稳定性一般也不好,而且配置相对复杂。Docker安装在CentOS/R
Hel 上后,会
默认选择 devicemapper,但是为了简化配置,其 devicemapper 是跑在
一个稀疏
文件模拟的块设备上,也被称为 loop-lvm。这样的选择
是因为不需要额外配置就可以运行 Docker,这是
自动配置唯一能做到的事情。但是 loop-lvm 的做法非常不好,其稳定性、
性能更差,无论是日志还是 docker info 中都会看到警告信息。官方文档有明确的
文章讲解了如何配置块设备给 devicemapper 驱动做存储层的做法,这类做法也被称为配置 direct-lvm。
除了前面说到的问题外,devicemapper + loop-lvm 还有
一个缺陷,
因为它是稀疏
文件,所以它会不断增长。
用户在使用过程中会注意到 /var/lib/docker/devicemapper/devicemapper/data 不断增长,而且无法控制。很多人会希望
删除镜像或者可以
解决这个问题,结果发现
效果并不明显。原因就是这个稀疏
文件的空间释放后基本不进行
垃圾回收的问题。因此往往
会出现即使
删除了
文件内容,空间却无法回收,随着使
用这个稀疏
文件一直在不断增长。
所以,
对于 CentOS/RHel 的用户来说,在没有办法使用 UnionFS 的情况下,一定要配置 direct-lvm 给 devicemapper,无论是为了性能、稳定性还是空间利用率。
配置环境:
centos 7
docker 1.12
配置步骤:
1.停止 docker daemon(root)
2.创建相关逻辑卷以及 thinpool(root)
分配磁盘予服务器,利用 fdisk 进行分区。
(2).创建 PV
例如:已分配磁盘 /dev/sdb1
#>
pvcreate /dev/sdb1
(3).创建 VG
#>
vgcreatedockervg /dev/sdb1
(4).创建 thinpool 逻辑卷
#>
lvcreate --wipesignatures y -n thinpool -l 50%VG dockervg
lvcreate --wipesignatures y -n thinpoolMeta -l 1%VGdockervg
可通过如下命令检验
#>lvscan
(5).转换成 thinpool
#>lvconvert -y --zero n -c 512K --thinpool dockervg/thinpool --poolMetadata dockervg/thinpoolMeta
#>
lvs -o lv_name,data_percent,Metadata_percent,lv_size,lv_Metadata_size,data_lv,Metadata_lv
注意:其中
LSize 即为 Data 的空间大小,
@H_640_33@msize 即为
MetaData 的空间大小,
Data 为 Data 对应逻辑卷,
Meta 为
MetaData 对应逻辑卷。
(6).扩展 thinpool(选做)
该步骤选做,用于
MetaData 或 Data 空间不足时的扩容。
例如:
MetaData 对应逻辑卷路径为/dev/mapper/dockervg-thinpool_t
Meta,则扩容命令如下。
#>
lvresize -L +1G /dev/mapper/dockervg-thinpool_tMeta
例如:thinpool 整体对应逻辑卷路径为dockervg-thinpool,则扩容命令如下。
#>
lvresize -L +5G /dev/mapper/dockervg-thinpool
3.备份并删除 Docker 存储目录(root)
#>
@H_512_65
@mkdir /var/lib/docker
.bk
@H_512_65
@mv /var/lib/docker/* /var/lib/docker
.bk
#>
rm -rf /var/lib/docker/*
4.修改 Docker 启动参数并启动(root)
修改 daemon.json 配置文件
#> vi/etc/docker/daemon.json
修改为如下内容。
{
"storage-driver": "devicemapper",
"storage-opts": [
"dm.thinpooldev=/dev/mapper/dockervg-thinpool",
"dm.use_deferred_removal=true",
"dm.use_deferred_@R_801_9421@ion=true",
注意:dm
.basesize 指定了 images 以及 container 可以扩展到的
最大空间。
5.重启 Docker 服务(root)
#>
systemctl daemon-reload
6.验证(root)
其中,方框内信息表明以使用了 direct_lvm 的 Docker 存储模式,同时
images 以及 container 可以扩展到的
最大空间已修改所需大小。
#>
docker pull Hello-world
结果类似如下,即表明运行正常。
@H_874_335@
大佬总结
以上是大佬教程为你收集整理的Centos-7 + Docker-1.12 中 devicemapper + direct_lvm 的 Docker 存储配置全部内容,希望文章能够帮你解决Centos-7 + Docker-1.12 中 devicemapper + direct_lvm 的 Docker 存储配置所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。