深入剖析Kubernetes-容器技术概念入门

224 阅读2分钟

time.geekbang.org/column/intr…

容器技术的兴起源于 PaaS 技术的普及;

Docker 项目通过“容器镜像”,解决了应用打包这个根本性难题。

容器本身没有价值,有价值的是“容器编排”。

什么是容器?

容器其实是一种沙盒技术。把你的应用“装”起来。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进沙盒的应用,也可以被方便地搬来搬去,也就是 PaaS 最理想的状态。

容器“边界”的实现手段

容器技术的核心功能,就是通过约束和修改进程的动态表现,从而为其创造出一个“边界”。

对于 Docker 等大多数 Linux 容器来说,Cgroups 技术是用来制造约束的主要手段,而 Namespace 技术则是用来修改进程视图的主要方法。

Linux 操作系统提供了PID、Mount、UTS、IPC、Network 和 User 这些 Namespace,用来对各种不同的进程上下文进行“障眼法”操作。Namespace 技术实际上修改了应用进程看待整个计算机“视图”,即它的“视线”被操作系统做了限制,只能“看到”某些指定的内容。

Linux Cgroups 就是 Linux 内核中用来为进程设置资源限制的一个重要功能,它最主要的作用,就是限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等。

容器,其实是一种特殊的进程而已,一个正在运行的 Docker 容器,其实就是一个启用了多个 Linux Namespace 的应用进程,而这个进程能够使用的资源量,则受 Cgroups 配置的限制。这也是容器技术中一个非常重要的概念,即:容器是一个“单进程”模型。