一路走过的集装箱
在本文中,我将尝试介绍裸机系统 , 虚拟系统和容器系统的基础知识 。 这样做的目的是了解这些系统的现状以及它们之间的差异,重点是它们在各自环境中如何执行程序。
裸机系统
让我们将Bare Metal Systems视为我们每天使用的台式机和笔记本电脑(甚至是服务器机房和数据中心中的服务器),它具有以下组件:
- 硬件(外部物理层)
- 操作系统平台(在硬件内部运行)
- 在OS上运行的程序(作为进程)
程序以可执行文件(操作系统可理解的格式)的形式存储在硬盘驱动器上,并通过一个或多个进程加载到内存中。 程序与内核交互,内核构成了OS体系结构和硬件的核心部分。 OS协调硬件(即CPU,I / O设备,内存等)与程序之间的通信。
有关什么程序或可执行文件,程序如何执行以及操作系统在哪里起作用的更详细说明, 请参见此*页面[2] 。
虚拟系统
在另一方面虚拟系统,与像, 虚拟盒或VMWare或虚拟系统控制器的帮助下管理程序[1]运行裸机系统上的操作系统。 这些系统将裸机硬件模拟为软件抽象,并在其中运行真实的OS平台。 这样的系统可以由以下几层组成,也称为虚拟机(VM):
- 硬件(虚拟机)的软件抽象
- 在软件抽象中运行的OS平台(来宾OS)
- 来宾操作系统中运行的一个或多个程序(进程)
这就像在另一台计算机中运行一台计算机(作为软件而摘要)一样。 裸金属系统的其余基础知识也适用于此抽象层。 在虚拟系统内部创建进程时,运行虚拟系统的主机操作系统也可能会生成一个或多个进程。
集装箱系统
现在来看容器系统,我们可以说以下内容:
- 它们运行在Bare Metal Systems或Virtual Systems中运行的OS平台之上
- 允许隔离进程和彼此共享内核的容器(由于cgroups [3]和命名空间之类的OS内核功能,在某些操作系统(如Linux)中可能与其他进程和资源隔离)
容器创建类似于OS的环境,在其中可以执行一个或多个程序。 这些执行中的每一个都可能导致主机OS上一个或多个进程。 容器系统由以下几层组成:
- 硬件(可通过内核功能访问)
- 操作系统平台(共享内核)
- 在容器内运行的一个或多个程序(作为进程)
摘要
看看这些围栏或彼此之间的圆角矩形,我们已经可以看到它一直都是容器。
裸机系统 , 虚拟系统和容器系统之间的区别越来越多。 虚拟系统将操作系统封装在一个厚硬件虚拟化内部,而容器系统则做了类似的事情,但虚拟化层却薄得多。
当我们单独查看它们时,这些系统之间有很多利弊,例如,可移植性,性能,资源消耗,重新创建此类系统的时间,维护等。
感激之词,保持联系
感谢您抽出宝贵时间,随时将您的疑问和评论发送给TheNeomatrix369 。 非常感谢我的同事,我们的DevOps工匠Robert Firek和Codurance的工匠David Hatanian , 他们为我的职位提供了宝贵的反馈,并为我指明了正确的方向。
资源资源
- [1] 虚拟机管理程序的*页面
- [2] 用于“程序如何执行? 操作系统在哪里发挥作用?”
- [3] cgroups上的Wikipedia页面
- [4] 有关名称空间的Linux手册页
翻译自: https://www.javacodegeeks.com/2016/03/containers-all-the-way-through.html