小学加法运算而已,不用递归没有灵魂!
|
./vegetables/carrots 并没有变化,反而是 ./fruits/carrots 的目录中出现了 carrots 文件,其内容是我们在 ./mnt/carrots 里的内容。 结论: 在mount aufs命令时候,没有对 vegetables 跟 fruits 设置权限,默认命令行上第一个的目录是可读可写的,后面的全都是只读的。有重复的文件名,在mount命令行上,越往前的被操作的优先级越高。 3.6 layer 分层 说完联合文件系统后我们再说下Docker中的分层,镜像可以通过分层来进行继承,基于基础镜像(没有父镜像)用户可以制作各种具体的应用镜像。不同 Docker 容器可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率。 Docker 中使用一种叫 AUFS(Anothe rUnionFS)的联合文件系统。AUFS 支持为每一个成员目录设定不同的读写权限。
当我们想修改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两个目录,其中水果中有苹果和蕃茄,蔬菜有胡萝卜和蕃茄: (编辑:唐山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


