容器镜像
上一节学习了容器最基础的两个技术namespace和c groups
Namespace 的作用是“隔离”,它让应用进程只能看到该 Namespace 内的“世界”;而 Cgroups 的作用是“限制”,它给这个“世界”围上了一圈看不见的墙。这么一折腾,进程就真的被“装”在了一个与世隔绝的房间里,而这些房间就是 PaaS 项目赖以生存的应用“沙盒”
如何在容器里的应用进程看到独立的文件系统
mount namespace使用规则
先挂载,才有效,它可以使得在容器中看到全新的目录结构:即使开启了 Mount Namespace,容器进程看到的文件系统也有可能跟宿主机完全一样,因为Mount Namespace 修改的,是容器进程对文件系统“挂载点”的认知。只有在“挂载”这个操作发生之后,进程的视图才会被改变。而在此之前,新创建的容器会直接继承宿主机的各个挂载。换言之可以理解为,它是隔离增量,而无法割离原有的存量。
与其他namespace的区别:它对容器进程视图的改变,一定是伴随着挂载操作(mount)才能生效。
如何使用mount namespace
需要在容器进程启动之前重新挂载它的整个根目录“/”。而由于 Mount Namespace 的存在,这个挂载对宿主机不可见,所以容器进程就可以在里面随便折腾了。
在根目录下挂载文件系统(容器镜像):一般会在这个容器的根目录下挂载一个完整操