为什么要在 docker 镜像上嵌入 Linux?

为什么要在 docker 镜像上嵌入 Linux?

我是 docker 的新手,据我所知,docker 最大的优势在于容器比虚拟机更轻更快,docker 引擎应该抽象主机操作系统,并且容器不附带客户操作系统,因为它们直接依赖于 docker 引擎(它使用任何主机操作系统的某些组件)。

现在,我有一个需求,在 Linux 机器上安装一些 Docker 容器(将来还会在 Windows 服务器上安装)。并且这些容器应该安装 Linux 发行版 + 一些软件。

在这种情况下,在 docker 内部使用 Linux 发行版是否有意义?如果有意义,那么在这种情况下 docker 和 VM 有什么区别?如果没有,有什么理由使这成为正确的方法?

答案1

应用程序之间存在隔离范围。无隔离,所有应用程序都在一个操作系统实例上运行。操作系统提供容器,资源分离。虚拟机,管理程序允许运行多个独立的操作系统映像。

虚拟机必须模拟硬件并执行系统调用开销。通过努力实现硬件加速和操作系统驱动程序支持,此开销会减少但不会为零。操作系统每次都是完整安装。但您可以安装在平台上运行的大多数操作系统。

操作系统容器是应用程序进程。高度隔离,有时会带来大量库,但仍然是进程。重量较轻,但您必须选择操作系统平台。即使 Docker 可以在 Window 或 Linux 上运行,x86 上还有很多其他操作系统不可用。

大型外星操作系统容器并非新鲜事物。除了 Solaris 区域之外,Solaris 几年前就可以运行 Linux 品牌区域。

答案2

这确实把事情搞混了,不是吗?我见过 Oracle、Centos 等的完整 Linux Docker 镜像,但不明白为什么需要它们,正如你所说,这不是摆脱这种事情的想法吗?就差异而言,我更喜欢完整的 VM,因为这样你就可以获得更多有关其运行情况的数据和更全面的控制。我说如果你正在做轻量级容器,那就做轻量级的 :)

相关内容