为什么不使用主机操作系统为所有目的

我一直在读docker,我已经明白,不同于虚拟机,docker使用主机操作系统的内核。 为什么要求基本映像必须是操作系统。 为什么不能使用主机操作系统(例如:文件系统)的资源,并使用主机操作系统支持的隔离? (我假设主机操作系统提供隔离机制)

这取决于你如何定义一个操作系统。 Docker镜像不是完整的操作系统(不像虚拟机)。 他们没有自己的核心。 这意味着没有特定的内核模块(用于外部硬件的设备驱动程序等),因为主机OS已经拥有它们。

图像只是stream行的Linux发行版的文件系统克隆(图像中的二进制文件是为目标曲目build造的)。 可能有多种原因,我会尽量在这里放一些:

  • 用户喜欢使用他们最喜欢的Linux发行版就像虚拟机一样
  • 基于分发的预configuration库。 允许您立即运行应用程序,并注意所有基于分布式的依赖关系。
  • 在同一主机上运行多个发行版的灵活性(Great dev / test sandboxing!)
  • 与其他容器的隔离度更高,因为每个图像都是自给自足的,不需要与其他人共享文件系统