“ docker”这个词现在很流行,我想弄清楚它是什么,它是怎么工作的。更具体地说,它与普通虚拟机(比如 VirtualBox、 HyperV 或 WMWare 解决方案)有什么不同。
文档(https://docs.docker.com/get-started/#a-brief-explanation-of-containers)的导言部分内容如下:
容器在主机的内核上本机运行应用程序。与只能通过虚拟机监控程序对主机资源进行虚拟访问的虚拟机相比,它们具有更好的性能特征。容器可以获得本机访问,每个容器运行在一个独立的进程中,不会比其他任何可执行文件占用更多的内存。
找到了!这就是区别。容器直接运行在宿主操作系统的内核上,这就是为什么它们如此轻量级和快速(加上它们提供了进程隔离和以 docker hub 形式的良好分发机制,这与容器之间相互连接的能力很好地结合在一起)。
等等。我可以使用 docker 在 Windows 上运行 Linux 应用程序-这怎么可能呢?当然,有一些 VM。否则我们就完不成任务了。
好吧,但是当我们在 Linux 主机上工作的时候,它看起来是什么样子? ? ?这里有真正的困惑... 有一个仍然定义操作系统作为一个基本的映像,我们想要创建的每个映像。即使我们说“ FROM 刮擦”-刮擦仍然是一些极简主义的内核... 所以这里来了
问题1 : 如果我运行 CentOS 主机,是否可以创建容器,它将直接使用这个主机操作系统的内核(而不是包含自己操作系统的 VM) ?如果是,我怎么做?如果没有,那么为什么 docker 的文档对我们撒谎(因为 docker 映像总是在某个 VM 中运行,并且它与其他 VM 没有太大区别,或者它是否存在?)?
经过一些思考和环顾四周,我想知道,如果一些优化是为了运行图像。来了
问题2 : 如果我运行两个容器,两个容器的图像都基于同一个父图像,这个父图像将只加载到内存中一次吗?每个容器有一个 VM 还是只有一个 VM,它同时运行两个容器?如果我们使用不同的操作系统呢?
第三个问题很难回答:
问题3 : 是否有一些资源,描述这类事情... 因为大多数讨论 docker 的文章只是告诉“它是如此的酷,你一定要使用它。只要运行一个命令,就会很高兴”... 这并不能解释太多。
谢谢。