【k8s学习笔记-容器概念入门(三)-容器镜像】

容器镜像

上一节学习了容器最基础的两个技术namespace和c groups

Namespace 的作用是“隔离”,它让应用进程只能看到该 Namespace 内的“世界”;而 Cgroups 的作用是“限制”,它给这个“世界”围上了一圈看不见的墙。这么一折腾,进程就真的被“装”在了一个与世隔绝的房间里,而这些房间就是 PaaS 项目赖以生存的应用“沙盒”

如何在容器里的应用进程看到独立的文件系统

mount namespace使用规则

先挂载,才有效,它可以使得在容器中看到全新的目录结构:即使开启了 Mount Namespace,容器进程看到的文件系统也有可能跟宿主机完全一样,因为Mount Namespace 修改的,是容器进程对文件系统“挂载点”的认知。只有在“挂载”这个操作发生之后,进程的视图才会被改变。而在此之前,新创建的容器会直接继承宿主机的各个挂载。换言之可以理解为,它是隔离增量,而无法割离原有的存量。

与其他namespace的区别:它对容器进程视图的改变,一定是伴随着挂载操作(mount)才能生效。

如何使用mount namespace

需要在容器进程启动之前重新挂载它的整个根目录“/”。而由于 Mount Namespace 的存在,这个挂载对宿主机不可见,所以容器进程就可以在里面随便折腾了。

在根目录下挂载文件系统(容器镜像):一般会在这个容器的根目录下挂载一个完整操作系统的文件系统(挂载在容器根目录上、用来为容器进程提供隔离后执行环境的文件系统,就是所谓的“容器镜像,专业名称为rootfs(根文件系统)”),比如 Ubuntu16.04 的 ISO。这样,在容器启动之后,我们在容器里通过执行 “ls /” 查看根目录下的内容,就是 Ubuntu 16.04 的所有目录和文件。

Docker 项目核心的原理

  1. 启用 Linux Namespace 配置;
  2. 设置指定的 Cgroups 参数;
  3. 切换进程的根目录(Change Root)。

如何理解容器镜像

1、容器镜像:打包整个操作系统的文件和目录,即包括应用以及它运行所需要的所有依赖

2、镜像文件不包括操作系统内核:rootfs 只是一个操作系统所包含的文件、配置和目录,并不包括操作系统内核。在 Linux 操作系统中,这两部分是分开存放的,操作系统只有在开机启动时才会加载指定版本的内核镜像
3、容器共享内核:同一台机器上的所有容器,都共享宿主机操作系统的内核
4、全局变量:如果你的应用程序需要配置内核参数、加载额外的内核模块,以及跟内核进行直接的交互,你就需要注意了:这些操作和依赖的对象,都是宿主机操作系统的内核,它对于该机器上的所有容器来说是一个“全局变量”,牵一发而动全身

容器的一致性优点

所有依赖被封装:对一个应用来说,操作系统本身才是它运行所需要的最完整的“依赖库”。rootfs 里打包的不只是应用,而是整个操作系统的文件和目录,也就意味着,应用以及它运行所需要的所有依赖,都被封装在了一起

打破本地与云端的鸿沟:因为镜像的深入到操作系统级别的运行环境一致性,打通了应用在本地开发和远端执行环境之间难以逾越的鸿沟

容器镜像的组成结构

在这里插入图片描述

总结

今天学习了 Linux 容器文件系统的实现方式。而这种机制,正是我们经常提到的容器镜像,也叫作:rootfs。它只是一个操作系统的所有文件和目录,并不包含内核,最多也就几百兆。而相比之下,传统虚拟机的镜像大多是一个磁盘的“快照”,磁盘有多大,镜像就至少有多大。

通过结合使用 Mount Namespace 和 rootfs,容器就能够为进程构建出一个完善的文件系统隔离环境。当然,这个功能的实现还必须感谢 chroot 和 pivot_root 这两个系统调用切换进程根目录的能力。

而在 rootfs 的基础上,Docker 公司创新性地提出了使用多个增量 rootfs 联合挂载一个完整 rootfs 的方案,这就是容器镜像中“层”的概念。

通过“分层镜像”的设计,以 Docker 镜像为核心,来自不同公司、不同团队的技术人员被紧密地联系在了一起。而且,由于容器镜像的操作是增量式的,这样每次镜像拉取、推送的内容,比原本多个完整的操作系统的大小要小得多;而共享层的存在,可以使得所有这些容器镜像需要的总空间,也比每个镜像的总和要小。这样就使得基于容器镜像的团队协作,要比基于动则几个 GB 的虚拟机磁盘镜像的协作要敏捷得多。

更重要的是,一旦这个镜像被发布,那么你在全世界的任何一个地方下载这个镜像,得到的内容都完全一致,可以完全复现这个镜像制作者当初的完整环境。这就是容器技术“强一致性”的重要体现。

(p.s.周日早起学习的感觉很不错呦,加油把容器这个系列课程学习完)

猜你喜欢

转载自blog.csdn.net/Amelie123/article/details/126081070
今日推荐