在Docker容器和Linux主机之间匹配?

Docker容器可以托pipe在Linux机器上,但是我想确定下面的matrix可以在特定的主机上放置什么样的容器:

kernel-version distro-type parity-check host xy container-type-A xy ok B < xy ok C > xy ? D xz ? E < xz ? F > xz ? 

我可以有理由得出A型和B型的平价,但其余的呢?

(我知道容器共享主机内核,而容器基本映像本质上是从发行版甚至自己创build的文件系统。)

容器没有看到或关心主机上的发行版,所以整列是不相关的。

如果容器中的应用程序需要内核中不在所运行的内核上的function,则为'n',否则为'y'。

运行在主机上的所有容器实际上都是使用底层主机的内核。 所以在大多数情况下容器的内核并不重要(如果依赖内核的某些特定行为,这可能很重要,请参见示例2)

例子#1:主机操作系统:Ubuntu 14.04.1(内核3.13.0-45)容器映像:比如CentOS 5.11,RHEL 5.11(内核2.6.18-398)

在容器(CentOS 5.11)中执行的任何进程实际上都将在底层内核3.13.0-45的上下文中运行!

没有单独的操作系统/内核运行容器(在上面的情况下内核2.6.18-398根本不运行)。

这实际上是你的容器立即启动的原因(它不运行任何额外的内核)。这个过程是在底层内核的上下文中产生的,可以在主机操作系统上运行的顶层命令中看到。

例子(#2):容器很可能无法工作的情况:你正在尝试使用容器中的一些特定的内核模块,这些模块在底层内核中是不可用的!