当前位置: 首页 > 面试题库 >

Docker如何处理不同的内核版本?

田普松
2023-03-14
问题内容

假设我为使用版本10内核的OS制作了一个映像,如果我在运行版本9内核的主机OS上为该映像运行一个容器,那么Doc​​ker会表现出什么行为?那版本11呢?

版本的向后兼容性重要吗?我出于好奇而问,因为文档仅讨论“最低Linux内核版本”等。这听起来像主机运行的内核版本超出该最低值无关紧要。这是真的?有警告吗?


问题答案:

假设我为使用版本10内核的操作系统制作映像。

我认为这是一个误解,除非您正在谈论依赖于Docker映像内较新内核功能的特定软件,这种情况很少见。一般而言,Docker映像只是一个自定义文件/目录结构,通过一个或多个命令FROMRUN指令以层的形式进行组装Dockerfiles,并带有一些元数据,例如打开哪个端口或在容器启动时执行哪个文件。这就是全部。Docker的基本原理与经典的chroot监狱非常相似,只是更现代一些,顶部还有一些糖果。

如果我在运行版本9内核的主机OS上为该映像运行一个容器,Docker会表现出什么行为?那版本11呢?

如果内核可以运行Docker守护程序,则它应该可以运行任何映像。

有警告吗?

如上所述,包含依赖于最新内核功能的软件的Docker映像将无法在不具有这些功能的内核上运行,这不足为奇。Docker不会阻止您在较旧的内核上运行这样的映像,因为它根本不在乎映像中的内容,也不知道使用了哪个内核来创建映像。

我唯一能想到的是针对特定的CPU(例如Intel或Amd)手动进行积极的优化编译软件。这样的映像将在具有不同cpu的主机上失败。



 类似资料:
  • docker如何在Debian主机上运行,或者在容器中运行OpenSUSE?它使用不同的内核,具有不同的模块。另外,老版本的Debian使用了老版本的内核,那么如何在3.10+版本的内核上运行它呢?旧的内核只有旧的内置功能,旧的发行版如何管理新的功能?这里面有什么“诀窍”?

  • 问题内容: 当存在具有不同版本的重复JAR时,该行为非常不一致。有人知道JVM如何处理重复项吗? 问题答案: 类加载器按顺序搜索类路径,并使用找到的第一个匹配类。

  • 内核如何处理引导选项 绝大部分的内核引导选项的格式如下(每个选项的值列表中最多只能有十项): name[=value_1][,value_2]...[,value_10] 如果"name"不能被识别并且满足"name=value"的格式,那么将被解译为一个环境变量(比如"TERM=linux"或"BOOT_IMAGE=vmlinuz.bak"),否则将被原封不动的传递给 init 程序(比如"si

  • 我正在使用java-8进行多个Spring boot项目,但现在其中一个需要转移到java-11。所以我需要在笔记本电脑上安装两个版本。那么如何在同一台机器上为不同的项目处理不同的JAVA版本呢?

  • 我有几个GPU机器。我的想法是将它们附加到不同的docker实例,以便在CUDA(或OpenCL)计算中使用该实例。 我的目标是用相当老的Ubuntu和相当老的AMD视频驱动程序(13.04)来设置docker映像。原因很简单:升级到较新版本的驱动程序会破坏我的OpenCL程序(由于有错误的AMD linux驱动程序)。 所以问题随之而来。是否可以使用旧的Ubuntu、旧的内核(例如3.14)和旧

  • 我正在开发一个仅支持iPhone的iOS 8应用程序。我想只支持iPhone 4S的纵向模式设备。 我有一个图形设计,它采用全屏内容。我使用自动布局来处理视图,并使其适用于所有屏幕。但是,我使用一个小资产来管理从iPhone4S工作的设计。当我在iPhone6S/6看到它时,内容非常小,大量额外的空间被浪费了。 当设备分辨率变大时,我想增加字体大小、图像大小。这个应用程序中有很多屏幕。 例如,我在