Docker如何运行不同内核的发行版?

docker如何在Debian主机上运行,​​也许是一个容器中的OpenSUSE? 它使用不同的内核,分开的模块。 另外,旧的Debian版本也使用了旧的内核,那么如何在内核版本3.10以上运行? 较旧的内核只有较旧的内置函数,旧版本如何pipe理新的function? 什么是“诀窍”呢?

docker如何在Debian主机上运行,​​也许是一个容器中的OpenSUSE

因为内核是相同的,并且将支持Docker引擎运行所有这些容器映像:主机内核应该是3.10或更多,但是它的系统调用列表相当稳定。

请参阅“ 构build容器:为什么了解用户空间与内核空间有关 ”:

  1. 应用程序包含业务逻辑,但依赖于系统调用。
  2. 一旦应用程序被编译,应用程序使用(即依赖于)的系统调用集被embedded到二进制文件(在更高级的语言中,这是解释器或JVM)。
  3. 容器不会抽象出对用户空间和内核空间的需求,以共享一组通用的系统调用。
  4. 在一个集装箱化的世界里,这个用户空间被捆绑起来,运到不同的主机上,从笔记本电脑到生产服务器。
  5. 未来几年,这将会带来挑战。

https://rhelblog.files.wordpress.com/2015/07/user-space-vs-kernel-space-simple-container.png?w=584&h=231

不时有新的系统调用被添加,旧的系统调用被弃用; 在考虑容器基础设施的生命周期以及将在其中运行的应用程序时,应该考虑这一点。

另请参阅“ 为什么内核版本与Docker容器中的Ubuntu版本不匹配? ”:

容器内没有内核。 即使你安装了一个内核,它也不会在容器启动时加载。 容器的目的是隔离进程而不需要运行新的内核。