我曾经将Docker容器视为轻量级,精简的虚拟机。 进行这种比较是有道理的,因为至少在Docker的最初市场中,总是将其与虚拟机进行比较-例如," Docker花费的启动时间少于VM,等等"。
但是docker容器不是虚拟机。
让我们对Docker容器和虚拟机进行并排比较。
虚拟机
虚拟机(VM)是物理硬件的抽象,它将一台服务器变成很多服务器。 虚拟机管理程序允许多个VM在单台计算机上运行。 每个VM均包含操作系统,应用程序以及必要的二进制文件和库的完整副本-占用数十GB。 VM也可能启动缓慢。
> follow devkube.blogsopt.com
虚拟机架构
假设有许多层。 连接这些层后,它们便构成了虚拟机。
虚拟机基础结构的底层主要是虚拟机的硬件。
该硬件层主要是运行虚拟机所需的硬件池。 它主要由Ram组成-它可以是SSD(通常是SSD),甚至是低性能的HDD,CPU等。
在此层之上,运行一个主机操作系统-通常是Linux,有时是Windows。 在此之上,有一个称为管理程序层的层。 系统管理程序层有两种类型。 一种运行在主要用于数据中心的硬件层之上,另一种运行在用于VMware或VirtualBox等程序的操作系统之上。
在此Hypervisor层之上,运行来宾OS块。 假设您要彼此完全隔离地运行三种不同类型的应用程序,则需要启动三个独立的VM。 系统管理程序直接控制这三个VMS。
但是现在想象一下,这三个虚拟机有其操作系统-Linux或Windows。 现在,假设他们具有Linux操作系统,因此每个OS大约为700mb。 我们必须启动三个VM,这些VM在我们的操作系统上占据大约2.1GB的存储空间。 最重要的是,每个来宾OS都需要一套自己的bin /库-Python依赖项,Node模块等,以奠定运行该应用程序的基础。
现在,最后,我们在此之上具有我们的Application层,该层通常是您已构建的应用程序的源代码
什么是容器?
容器是应用程序层的抽象,将代码和依赖项打包在一起。 多个容器可以在同一台计算机上运行,并与其他容器共享其OS内核,每个容器在用户空间中作为隔离的进程运行。 容器占用的空间少于VM(容器映像的大小通常为几十MB),可以处理更多的应用程序,并且需要的VM和操作系统更少。
> Follow devkube.blogspot.com
Docker容器架构
Docker并不是魔术,而是需要一些基础硬件来运行。 因此,第一层(硬件层)是虚拟机层基础结构所共有的。
在此之上,有一个主机操作系统。 它可以是能够运行Docker的任何操作系统。 Docker支持所有主要的Linux发行版,并且有一些方法可以在Windows计算机和Mac上运行Docker。
现在进入第三层。 这里有一些有趣的东西。 Docker守护程序替换了该层,该层是虚拟机体系结构中的管理程序层。 该服务在后台运行,负责运行Docker容器。
然后Bin / Libray驻留在该应用程序的容器中,并且有该应用程序的源代码。 Docker守护程序管理所有这些容器层。
因此,我们不需要来宾操作系统,并节省了它所占用的内存量。 我们还保存了运行这些VM时机器上的负载。
在这里,每个应用程序都相互隔离,因为它已托管在不同的容器中,但仍位于同一主机OS上。
-
虚拟机
+关注
关注
1文章
917浏览量
28213 -
Docker
+关注
关注
0文章
461浏览量
11859
发布评论请先 登录
相关推荐
评论