docker主机操作系统和容器基映像操作系统之间的关系是什么?

docker主机操作系统和容器基映像操作系统之间的关系是什么?,docker,Docker,我不确定我问的问题是否正确。。。但是,当我阅读了所有我能接触到的docker时,我发现我可以在Ubuntu 12.04上安装docker(例如),然后我可以安装Fedora容器或其他版本的Ubuntu?(例如,用户在容器中安装了busybox。) 当然,我可能完全错了 但我希望在基本系统和容器之间存在短暂的联系 重申:主机操作系统和容器基映像的操作系统之间的关系是什么?确切地说,它们唯一的共同点是内核。他们的整个世界(文件系统)都在docker容器中。正如BraveNewCurrency所提到的

我不确定我问的问题是否正确。。。但是,当我阅读了所有我能接触到的docker时,我发现我可以在Ubuntu 12.04上安装docker(例如),然后我可以安装Fedora容器或其他版本的Ubuntu?(例如,用户在容器中安装了busybox。)

当然,我可能完全错了

但我希望在基本系统和容器之间存在短暂的联系


重申:主机操作系统和容器基映像的操作系统之间的关系是什么?

确切地说,它们唯一的共同点是内核。他们的整个世界(文件系统)都在docker容器中。

正如BraveNewCurrency所提到的,主机操作系统和容器之间的唯一关系是内核

这是docker和“常规”虚拟机的主要区别之一,没有开销,一切都直接发生在主机的内核中

这就是为什么在容器中只能运行基于Linux的分发/二进制文件。如果您想运行其他东西,这并非不可能,但您需要在容器中进行某种虚拟化(qemu、kvm等)

Docker管理作为文件系统表示的图像。您可以安装任何linux发行版或简单地放入二进制文件

事实上,为了本例的方便,我们通常依赖于基本映像,但是您也可以在不使用任何分发库/二进制文件的情况下创建映像。这样,您将拥有一个非常小但功能强大的容器


关于发行版还有一点:由于内核仍然是主机的内核,因此发行版不会提供任何特定的内核模块/补丁。

还有另一个考虑因素-即使两个内核相同,如果主机操作系统不支持Docker,则会出现问题,如RHEL 6:


因此,即使映像是Linux映像,您也无法在RHEL6上启动容器

因此,如果主机操作系统是Ubuntu,那么容器也将是Ubuntu?容器的内核将是Ubuntu的内核,但仅此而已。您可以轻松地将centos、archlinux、debian或任何其他基于linux的发行版作为容器运行。虽然这些信息可能会直接/间接地在docker网站上声明,但我真的觉得他们应该让这一点更清楚一些。我已经完成了我的主页、概述、互动教程和大部分的基本教程。尽管如此,我还是对这个话题感到困惑,并开始认为docker的最佳性能(基于站点的架构图)需要主机和容器操作系统上的匹配。我对“linux内核”的概念还不熟悉,所以这对我来说不是很明显。知道了这一点,docker马上就变成了一个坏蛋。这似乎表明,只有操作系统的用户空间部分(库、命令、应用程序)可以被容器化。如果应用程序需要不同的内核版本(例如3.10和4.9),那么它可能无法在容器中运行。是吗?是的。但是,您可以将实际的虚拟机(例如qemu)封装起来,并在那里运行任何内核。