docker集装箱不需要一个操作系统,但每个容器有一个。 为什么?

“docker工人”这几天是一个热门词汇,我试图弄清楚它是什么,它是如何工作的。 更具体地说,它与普通虚拟机(如VirtualBox,HyperV或WMWare解决scheme)有何不同。

文档的介绍部分( https://docs.docker.com/get-started/#a-brief-explanation-of-containers )表示:

容器在主机的内核上本地运行应用程序。 它们比只能通过pipe理程序虚拟访问主机资源的虚拟机具有更好的性能特征。 容器可以获得本地访问权限,每个容器都以独立的进程运行,不会比其他可执行文件更多的内存。

答对了! 这是区别。 容器直接运行在托pipe操作系统的内核上,这就是为什么它们是如此轻量级和快速的(另外它们提供了隔离进程和漂亮的分布机制,forms为docker集线器,可以很好地连接容器彼此) 。

但是等一下。 我可以使用docker在Windows上运行Linux应用程序 – 它怎么可能? 当然,有一些虚拟机。 否则,我们只是不能完成工作…

好的,但是当我们在Linux主机上工作时,它是怎样的呢? 而这里真正的困惑……那里仍然定义操作系统作为我们想要创build的每个图像的基本图像。 即使我们说“从零开始” – 从零开始仍然是一些简约的内核…所以这里来了

问题1 :如果我运行CentOS主机,我可以创build一个容器,它可以直接使用这个主机操作系统的内核(而不是VM,它包含自己的操作系统)? 如果是,我该怎么办? 如果不是,为什么docker的文档对我们来说(因为docker映像总是在一些虚拟机中运行,并且与其他虚拟机没有太大区别,或者是不是?)?

经过一番思考和环顾四周,我想知道,如果一些优化是为了运行图像。 来了

问题2 :如果我运行两个容器,这两个图像都基于相同的父图像,将这个父图像加载到内存只有一次? 每个容器会有一个虚拟机,还是只有一个运行这两个容器的虚拟机? 而如果我们使用不同的操作系统呢?

第三个问题是相当殴打:

问题3 :是否有某些资源可以描述这种事情……因为大多数讨论docker工人的文章都只是说“太酷了,你一定要用UT,只用一个命令,快乐”。 ..这不解释太多。

谢谢。