虚拟机不是一种进程吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟机不是一种进程吗?相关的知识,希望对你有一定的参考价值。
我试图理解Docker的基本概念,许多文档都说“ Docker不是虚拟机,而是一个进程”。在我看来,这句话很尴尬,因为据我所知,虚拟机本身也运行在主机os上,这使其本身成为“进程”。
虚拟机的工作方式与其他普通应用程序/进程的运作方式之间有很大区别吗?
Docker是容器管理软件系统的商标。TL; DR:
- 容器是包装概念。
- VM是一个兼容性概念。
- VM是一种安全概念。
容器不是一个进程,它是单个系统映像]中一个进程集合的隔离。>隔离的是什么?首先,最重要的是路径名空间。给定容器内的进程共享路径名空间,因此它们同意/ usr / bin / env是同一件事。在不同容器中或在非容器环境中的两个进程不一定会在/ usr / bin / env中看到相同的文件。至少40年来,此功能一直是UNIX派生系统的功能。在服务chroot()下。
[最近,容器已采取隔离措施,例如进程,用户ID和网络接口,不在名称空间中。在较早的基于chroot的系统中,在容器中运行ps
会显示不在该容器中的进程。尽管进行了特殊处理,以防止chroot的root用户获得基础系统上的root访问权。在这些现代系统中,不仅对pid space
进行了分区,还对user ids进行了分区,因此容器中的根与整个系统上的根不对应。所有这些都是通过控制单个系统映像中内核的许多功能来完成的。控制这些功能的软件:Docker等。
虚拟机不是单系统映像的一部分。每个VM都是自己的逻辑计算机,运行自己的内核,外壳等。通过进行一些仔细的配置,您可以使它在许多VM中出现各种文件。但这与安装网络文件系统导出的文件系统没有什么不同。
为什么要选择另一个:容器共享我的操作系统,并且很容易摆脱由冲突的软件系统引起的<.so verionitis hell>;我可以将软件打包在一个容器中,并且它与正在运行的系统无关。但是,我不能打包我需要的内核。因此,如果我的软件需要ubuntu 14.02;并且我正在运行18.04,容器将无法拯救我。 容器是包装概念。
VM方便在单个计算机上支持多种版本或类型的操作系统。由于每个VM都运行独特的系统软件,因此我可以在18.04系统上运行我的14.02应用程序,而明智的选择是。VM是兼容性概念。
VM也很方便用作安全层。想象一个网页有一个js炸弹,它可以破坏我的内核(我知道,相当长)。如果在容器中运行浏览器,则表明内核已损坏。如果我在VM中运行它,则表明该VM内核已损坏-我只需要删除或倒回它,损坏就消失了。虚拟机是一种安全概念。
以上是关于虚拟机不是一种进程吗?的主要内容,如果未能解决你的问题,请参考以下文章