Linux容器是什么?

2008年,Linux Container(简称LXC)容器技术诞生LXC是一种内核轻量级的操作系统层虚拟化技术,主要由Namespace和Cgroup两大机制来保证实现。Namespace负责资源隔离,比如可以用来将系统内部的对象划分为不同的项目组或用户组。Cgroup负责资源管理控制,比如进程组使用CPU/MEM的限制,进程组的优先级控制,进程组的挂起和恢复等等。

 

这种有效将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求的技术就是容器技术。它的价值在于可以满足快速开发新业务的需求容器已经逐渐成为不可或缺的技术无论你的基础架构是在公司内网物理机或虚拟化还是在云端公有云或私有云,容器都能满足你的需求。因而选择正确的容器平台同样重要。

 

博云BeyondContainer容器云平台包括你所需要的企业级Kubernetes 能力多云异构kubernetes管理能力和云原生应用管理能力

容器不就是虚拟机吗?

虚拟化技术是一种资源管理技术。可以简单理解,虚拟化技术就是在一台物理计算机上,通过中间虚拟软件层Hypervisor隔离CPU、内存等硬件资源,虚拟出多台虚拟服务器,一台物理服务器便可以安装多个应用程序,达到资源利用的最大化,而且多个应用之间相互隔离。


如下图所示:

 


借助虚拟化技术,用户可以不受限于物理资源,提高硬件的利用率、降低能耗和提高IT运维效率。

 

容器和虚拟机的区别


容器与虚拟机作为两种不同的虚拟化技术方案,在原理和运行方式上都有区别。简单来说,虚拟机是一个机器,而容器是一个进程。


· 虚拟机(Virtual Machine):是一种存在于硬件层和操作系统层间的传统虚拟化技术,通过“伪造”一个硬件抽象接口,将一个操作系统以及操作系统层以上的层嫁接到硬件上,实现和真实物理机几乎一样的功能。目标是建立一个可以用来执行整套操作系统的沙盒独立执行环境,虚拟机需要安装另一层操作系统才能执行应用程序,而容器内不需要安装操作系统就能执行应用程序。


· 容器:是一种存在于操作系统层和函数库层之间的虚拟化技术,通过“伪造”操作系统的接口,将函数库层以上的功能置于操作系统上。容器直接将一个应用程序所需的相关程序代码、函数库、环境配置文件都打包起来建立沙盒执行环境。区别与虚拟机,容器不是在系统外再建立虚拟环境,而是在系统内的核心系统层来打造虚拟执行环境,透过共享宿主系统的做法,取代一个个虚拟机的功能。因此,容器也被称为是系统层的虚拟化技术。


简单来说,如果虚拟机是把整个操作系统封装隔离,从而实现跨平台应用的话,那么容器则是把一个个应用单独封装隔离,从而实现跨平台应用。所以容器体积比虚拟机小很多,理论上占用资源更少。


特点

容器

虚拟机

启动

秒级

分钟级

硬盘使用

一般为 MB

一般为 GB

性能

接近原生

弱于原生

集群规模

上万

上百

系统资源

0-5%

5-15%

运行空间

内核级

用户级


每一个虚拟机里面都有一套完整的操作系统,而容器层安装在操作系统之上,它直接利用了宿主机的内核,更加轻量化,启动速度极快。通常,我们在会每个容器里面跑单个的应用,而在虚拟机里会跑很多应用。


下图展示了虚拟机和容器的不同。


 


可以看到,传统的虚拟机运行N个不同的应用就需要启动N个虚拟机,每个虚拟机都需要单独分配独占的内存、磁盘等资源。而使用容器技术,只需要启动N个隔离得“薄”容器,并将应用放进容器中就可以了。


容器包含了应用和所需的依赖,但不需要独占资源,没有一个虚拟系统,而是和宿主机共享硬件资源和操作系统,和其他容器共享内核,从而实现资源的动态分配。多个容器在同一个宿主机操作系统中的用户空间以独立的进程运行。因此,容器相比虚拟机要轻量许多,在一个主机上可以同时启动近百个容器,一个应用要在数量上横向扩展非常便捷,而虚拟机则几乎不可能启动同样多的数量。对于重启操作,容器近似于重启一个进程,而虚拟机则相当于重启操作系统。

容器发展史

  • 1979年——贝尔实验室发明chroot,为应用构建一个独立的虚拟文件系统视图。
  • 2000年——FreeBSD推出FreeBSDJail,第一个商用化的OS虚拟化技术。
  • 2001年——LinuxVServer诞生
  • 2004年——SUN发布SolarisContainers,,第二个商用化的OS虚拟化技术。
  • 2005年——OpenVZ诞生,LinuxOS虚拟化技术先行者。
  • 2006年——Google推出ProcessContainers,后更名为Cgroups
  • 2008年——Linux容器工具LXC诞生。
  • 通过将Cgroups的资源管理能力和 Linux Namespace(命名空间)的视图隔离能力组合在一起,作为一项完整的容器技术出现在Linux内核中,为如今广泛应用的容器技术打下坚实的基础。
  • 2011年——CloudFoundry推出Warden,一个完整的容器管理系统雏型。
  • 2013年——Docker诞生,其本身其实也是属于LXC的一种封装,最大的特性就是引入了容器镜像。
  • Docker引入了一整套管理容器的生态系统,这包括高效、分层的容器镜像模型、全局和本地的容器注册库、清晰的RESTAPI、命令行等等。Docker生不仅解决了软件开发层面的容器化问题,还一并解决了软件分发环节的问题,为“云”时代的软件生命周期流程提供了一套完整的解决方案。
  • 2013年——CoreOS发布
  • 2014年——Google推出开源的容器编排引擎Kubernetes。
  • Kubernetes解决了混合云场景下,大规模集群的容器部署、管理等问题。脱胎于 Borg 的K8S在容器的基础上引入了 Pod 功能,让不同容器之间互相通信,实现容器的分组调配。
  • 2015年6月——Docker带头成立OCI
  • 2015年7月——Google带头成立CNCF,云原生浪潮启动。
  • 2017年~2018年——基于Kubernetes提供容器服务商业化。
  • 2018年——Kubernetes成为容器编排领域的事实标准。

容器技术的优势

轻量化:传统IaaS、虚拟化是以GB为容量单位,重启一次往往需要数分钟才能完成,总体来讲比较笨重。而容器是MB为容量单位,一般容器镜像约数百MB,重启一次只需要数秒即可完成。


标准化:通过容器镜像将应用程序和依赖环境进行打包,实现在开发、测试、准生产、生产等各环境中快速流转,根治传统应用部署因环境差异出现的问题。


隔离性:容器实现了应用级资源隔离。避免同一台主机上多个应用服务相互影响的问题。


利用率:容器以其“轻”“小”的特性,带来了更高效的资源利用率。


体验博云容器云平台的能力


为什么选择博云

博云是国内最早基于kubernetes提供容器云平台能力的专业容器云厂商一直致力于持续对kubernetes底层能力增强并将自身技术实践经验持续回馈开源社区博云长期在Kubernetes 开源榜单累计贡献度位居全球前列 Kubernetes 为代表的云原生技术落地到产品和生产实践中贡献技术力量

Copyright ⓒ 2022 苏州博纳讯动软件有限公司 国徽 苏ICP备13004761号 法律声明及隐私政策