|NO.Z.00017|——————————|CloudVirtualiZation|——|Cloud&Docker存储.V02|——|存储驱动|
一、存储驱动
### --- Docker存储驱动(storage driver)是docker的核心组件,
~~~ 它是docker实现分成镜像的基础
~~~ device mapper(DM):性能和稳定性存在问题,
~~~ 不推荐生产环境中使用;DM会在centos7中较为老的版本中使用,
~~~ 若是centos7的内核版本低于欧3.18版本;
~~~ overlayfs还没有进入主线版本,那主线版本呢当时是DM,
~~~ docker会退格使用DM的存储驱动。
~~~ # docker info:性能和稳定存在问题是相对与overlayfs来说的,
~~~ 并不是差到不能用,推荐还是使用overlayfs
~~~ # Storage Driver: overlay:我们在安装的时候加入update的更新,
~~~ 把版本更新到最新版本。若是没有更新,使用的centos7的版本比较老的话默认存储驱动就会是DM
~~~ # btrfs:社区实现了btrfs driver稳定性和性能存在问题;
~~~ 是居于docker社区实现的,在非docker容器中也有在使用;对于DM来说相对好一点
~~~ # overlayfs:内核3.18overlayfs进入主线,性能和稳定性优异,第一选择;
~~~ 在3.18以后,在centos中Redhat系列中才会进入到主线,Ubuntu16已进入主线。
[root@hub volumes]# docker info
Storage Driver: overlay
btrfs
overlayf

### --- Docker overlayfs driver
[root@hub ~]# mount -t overlay overlay -olowerdir=./low,upperdir=./upper,workdir=./work ./merged
二、overlay工作过程
### --- overlay工作过程
[root@hub ~]# mkdir /var/overlay
[root@hub ~]# cd /var/overlay/
### --- 在overlay目录下创建这四个目录
[root@hub overlay]# mkdir low work upper merged
~~~ work: 工作目录
~~~ low: 最下层
~~~ upper: 中间层
~~~ merged: 用户的挂载层,最上层。
[root@hub overlay]# mount -t overlay overlay -olowerdir=./low,upperdir=./upper,workdir=./work ./merged //挂载
[root@hub overlay]# mount
overlay on /var/overlay/merged type overlay (rw,relatime,lowerdir=./low,upperdir=./upper,workdir=./work) //显示挂载成功
[root@hub overlay]# vim low/1.txt
aaaaaaaaaaa
[root@hub overlay]# vim upper/2.txt
bbbbbbbbbbb
[root@hub overlay]# tree
.
├──low
│ └── 1.txt
├── merged // merged为什么会出现1.txt和2.txt文件
│ └── 1.txt // 自上而下去看,若是上面有的,下面都会显示出来;若是上面有的会把下面的覆盖掉;
│ └── 2.txt // 显示复制的机制,自上而下的去看。
├── upper
│ └── 2.txt
└── work
└── work
[root@hub overlay]# cat merged/1.txt
aaaaaaaaaaaaaaaaaaaaaaaa
[root@hub overlay]# cat merged/2.txt
bbbbbbbbbbbbbbbbbbbbbb
[root@hub overlay]# vim merged/1.txt
aaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbb
[root@hub overlay]# cat low/1.txt // 最低层low层1.txt文件内容没有修改
aaaaaaaaaaaaaaaaaaaaaaaa
[root@hub overlay]# ls upper/ // 而中间层upper出现了一个1.txt文件,
1.txt 2.txt
[root@hub overlay]# cat upper/1.txt // 且1.txt文件变成我修改后的文件,而low层1.txt文件内容没有变化
aaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbb
[root@hub overlay]# rm -rf merged/1.txt // 在用户挂载层最上层删除1.txt文件,
[root@hub overlay]# cat low/1.txt // 而low里面1.txt文件还是存在,文件内容还是aaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
[root@hub overlay]# ls -l upper/ // upper下1.txt文件依然存在,但是它的颜色发生变化了
c--------- 1 root root 0, 0 Jan 6 19:02 1.txt // c标签,在overlay下代表这个文件已经被删除了
-rw-r--r-- 1 root root 23 Jan 6 18:48 2.txt
[root@hub overlay]# rm -rf upper/1.txt // 把upper下的1.txt文件删除掉
[root@hub overlay]# cat merged/1.txt // merged下的1.txt文件又回来了,并且是之前的文件内容
aaaaaaaaaaaaaaaaaaaaaaaa
### --- 修改为overlayfs存储驱动:若我们的存储引擎不是overlay的情况下,建议改为overlay。
[root@hub ~]# echo "overlay" >/etc/modules-load.d/overlay.conf // 先把overlay加载到模块加载中
[root@hub ~]# cat /proc/modules|grep overlay // 再去查看当前的模块加载方式
[root@hub ~]# reboot // 重启
[root@hub ~]# vim /etc/systemd/system/docker.service
--storage-driver=overlay \ // 并且把存储驱动改为overlay即可
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv011-docker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」