3.Docker之联合文件系统

联合文件系统

只有第一个目录文件具有写权限,如下:x里面有B,Y里面有A,将X和Y两个文件联合在成一个文件Z,即联合成一个视图层

3.Docker之联合文件系统_第1张图片

如果修改联合文件系统
3.Docker之联合文件系统_第2张图片
我们在Z目录中对A和B做出了修改。发现原本拥有B文件的X发生了改动。 但是有用Y中的A文件并没有发生改变。 相反的,我们发现在X目录中多了一个删除A文件的记录。 这是为什么? 这就是aufs的一个特性。 在所有联合起来的目录中,只有第一个目录是有写权限的。 也就是说Z不论修改什么都只能对第一个联合进来的X做更改,它是没有权限对其他目录(例如Y)做任何改动的。 如果我们在Z目录中对A做出了更改,它是没有权限修改A的,所以相应的在X中添加一条记录,记录了更改A的内容。 这就是aufs。大家仔细想一下这样的特性会产生什么效果? 看下面的图。

3.Docker之联合文件系统_第3张图片

我们之前的Y就是镜像层,X就是容器层,而联合文件目录Z,就是我们进入容器以后展示给我们看的视图层。不知道大家到了这里脑袋能否转过弯来。Y是永远无法更改的,所以它是镜像层。X是可以修改的,并且它可以记录对镜像层的修改来达到定制自己的文件的目的,这样在视图层上,我们就看到的是经过容器层修改后的视图了。 这就是docker使用aufs对文件系统耍的花样。 我们下载各种操作系统的镜像其实是做的很像是操作系统的镜像层。这个镜像层里有root,有bin,有sbin,有proc,有一切你想要的命令脚本。 docker会创建一个空的容器层并和镜像层联合起来,成为一个视图给我们看,并修改了各种环境变量让所有命令都指向镜像层去。 这样就有了在一开始我们进入容器后的那个截图。 我们看到的甚至不是容器层,而是联合起来的视图层。 所以我们其实还是在宿主机上的用户, 只不过我们看不出来。

网络名称空间namespace

  • 视图层
  • 容器层
  • 镜像层

你可能感兴趣的:(Docker)