overlayfs相关运用

知道overlayfs是因为对于容器技术的研究和对于Docker技术的深入学习。虽然因为工作的关系,容器系列文章一直没有机会进一步的写下去,今天正好借助overlayfs这个Docker对于镜像也就是docker最大创新的东西说清楚,也为重启容器技术类文章做一个开始。

首先先要搞清楚什么是overlayfs,这个文件系统的作用是什么,为啥要用这个文件系统,至于Docker容器是怎么样使用这个文件系统形成所谓镜像的,将在容器相关文章内涉及。

overlayfs顾名思义是一个分层的文件系统,它是一个面向Linux的文件系统服务,其实现一个面向其他文件系统的联合挂载。 它于2014年被合并到Linux内核的3.18版本。 其4.0版本带来了必要的改进。

举例来说我们可以通过这个文件系统,将多个不同文件夹合并成一个文件夹。如:

|-- Test
|-------- 1.txt
|-------- 2.txt
|-- Test2
|-------- 1.txt
|-------- 3.txt

可以通过该文件系统合并为到Test3文件夹内,最后Test3文件夹内可以看到 1.txt 2.txt 3.txt这三个文件。那问题来了合并后1.txt文件的内容到底是那个?如果对合并后的文件进行修改,Test文件夹内的1.txt文件被修改还是Test2内的被修改?

要回答这问题需要说下overlayfs的一些概念。overlayfs分为下层目录,上层目录,工作目录和合并后的目录,下层目录是只读的,上层目录是读写的,工作目录只是一个临时的操作,工作目录必须和上层目录在一层内。也就是在如果在合并后的目录内增加一个文件夹或者文件,删除文件修改文件等操作是不会影响到底层的文件,但是在底层的文件目录内新增一个上层和合并层都没有的文件,会在合并后的文件内显示出来,但是当在上层创建一个同名文件但内容不同后,会遮避下层的这个文件,同样在合并层的修改不会反应到下层,只会在上层文件出现。

来看下具体的操作,首先看下overlayfs是否支持。

cat /proc/filesystems | grep overlay
nodev    overlay

可以通过如下命令来创建一个overlayfs

mount -t overlay overlay -o lowerdir=./lower,upperdir=./upper,workdir=./work ./merged

实际应用:除了Docker对该文件服务的实际应用外,我用这个文件系统达到一个对下层只读文件结果做修改而不影响下层文件的使用,用来搭建测试环境。

Lokie博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • 本博客使用免费开源的 laravel-bjyblog v5.5.1.1 搭建 © 2014-2018 lokie.wang 版权所有 ICP证:沪ICP备18016993号
  • 联系邮箱:kitche1985@hotmail.com