张春源
作者张春源2015-11-26 18:08
技术总监, 希云cSphere

Docker容器 vs 全虚拟化

字数 792阅读 1551评论 0赞 0

虚拟机(VM)是对某种计算机操作系统的模拟,虚拟机的实现是基于计算机虚拟化的架构和指令,具体可能需要特定的硬件、软件、或软硬件同时的支持。在本文中希云将为大家揭晓Docker容器和全虚拟化之间的区别。
图1

Docker是一个创建封装好的隔离计算机环境,每个封装好的环境都被称为容器。
启动一个Docker容器非常迅速,因为:

每个容器共享宿主系统的内核

然而,各个容器都运行着一个Linux的副本
这意味着没有hypervisor,而且不需要额外的启动
对比之下,KVM, VirtualBox 或者 VMware之类的虚拟机实现是不同的。

宿主系统 vs 客户系统

宿主系统
是直接安装在计算机上的原生系统
客户系统
是安装在一个虚拟机上,或者在宿主机的一个分区上的系统

如果是安装在虚拟机上,客户系统可以与宿主系统不同
如果是安装在一个磁盘分区上,客户系统必须与宿主系统相同

Hypervisor (虚拟机监视器)

是一种计算机软件、固件或者硬件,用于创建并运行虚拟机的
一个系统中安装着hypervisor,里边运行着一个或多个虚拟机,这个系统可被定义为宿主机
各个虚拟机被定义为客户机

Docker容器

由Docker创建的一个封闭计算环境
Linux平台上的Docker

基于Linux内核提供的组件构建的(特别是cgroups和namespaces)
不像虚拟机,不需要包含一个独立的操作系统

非Linux平台上的Docker

使用Linux虚拟机去运行容器

Docker守护进程

是管理容器的持久进程
使用Linux特定的内核特性去实现

全虚拟化的系统分配到的是独有的一组资源,只有极少量的资源会共享,是有更强的隔离性,但是更加重了(需要更加多的资源)。用Docker容器有弱些的隔离性,但是它们更加轻量,需要更少的资源,所以你可以毫不费力地启动上千个容器。

文章来自:希云cSphere(http://csphere.cn)

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表