加入收藏 | 设为首页 | 会员中心 | 我要投稿 唐山站长网 (https://www.0315zz.com.cn/)- 数据安全、数据开发、文字识别、图像处理、媒体智能!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

小学加法运算而已,不用递归没有灵魂!

发布时间:2021-01-29 12:38:02 所属栏目:外闻 来源:互联网
导读:./vegetables/carrots 并没有变化,反而是 ./fruits/carrots 的目录中出现了 carrots 文件,其内容是我们在 ./mnt/carrots 里的内容。 结论: 在mount aufs命令时候,没有对 vegetables 跟 fruits 设置权限,默认命令行上第一个的目录是可读可写的,后面的全

./vegetables/carrots 并没有变化,反而是 ./fruits/carrots 的目录中出现了 carrots 文件,其内容是我们在 ./mnt/carrots 里的内容。

结论:

在mount aufs命令时候,没有对 vegetables 跟 fruits 设置权限,默认命令行上第一个的目录是可读可写的,后面的全都是只读的。有重复的文件名,在mount命令行上,越往前的被操作的优先级越高。

3.6 layer 分层

说完联合文件系统后我们再说下Docker中的分层,镜像可以通过分层来进行继承,基于基础镜像(没有父镜像)用户可以制作各种具体的应用镜像。不同 Docker 容器可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率。

Docker 中使用一种叫 AUFS(Anothe rUnionFS)的联合文件系统。AUFS 支持为每一个成员目录设定不同的读写权限。

  1. rw 表示可写可读read-write。
  2. ro 表示read-only,如果你不指权限,那么除了第一个外,ro是默认值,对于ro分支,其永远不会收到写操作,也不会收到查找whiteout的操作。
  3. rr 表示 real-read-only,与read-only不同的是,rr 标记的是天生就是只读的分支,这样,AUFS可以提高性能,比如不再设置inotify来检查文件变动通知。

当我们想修改ro层的文件时咋办?因为ro是不允许修改的啊!Docker中一般ro层还带个wh的能力。我们就需要对这个ro目录里的文件作whiteout。AUFS的whiteout的实现是通过在上层的可写的目录下建立对应的whiteout隐藏文件来实现的。比如我们有三个目录和文件如下所示:
 

chroot 只改变当前进程的 /,pivot_root改变当前 mount namespace的 / 。pivot_root 可以认为是 chroot 的改良版。

3.4 一致性

由于 rootfs 里打包的不只是应用,而是整个操作系统的文件和目录,也就意味着应用以及它运行所需要的所有依赖都被封装在了一起。有了容器镜像打包操作系统的能力,这个最基础的依赖环境也终于变成了应用沙盒的一部分。这就赋予了容器所谓的一致性:

无论在本地、云端,还是在一台任何地方的机器上,用户只需要解压打包好的容器镜像,那么这个应用运行所需要的完整的执行环境就被重现出来了。

3.5 UnionFS 联合文件系统

如何实现rootfs的高效可重复利用呢?Docker在镜像的设计中引入了层(layer)的概念。也就是说用户制作镜像的每一步操作都会生成一个层,也就是一个增量rootfs。介绍分层前我们先说个重要知识点,联合文件系统。

联合文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。比如现在有水果fruits、蔬菜vegetables两个目录,其中水果中有苹果和蕃茄,蔬菜有胡萝卜和蕃茄:

(编辑:唐山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读