假设我为使用版本10内核的OS制作了一个映像,如果我在运行版本9内核的主机OS上为该映像运行一个容器,那么Docker会表现出什么行为?那版本11呢?
版本的向后兼容性重要吗?我出于好奇而问,因为文档仅讨论“最低Linux内核版本”等。这听起来像主机运行的内核版本超出该最低值无关紧要。这是真的?有警告吗?
假设我为使用版本10内核的操作系统制作映像。
我认为这是一个误解,除非您正在谈论依赖于Docker映像内较新内核功能的特定软件,这种情况很少见。一般而言,Docker映像只是一个自定义文件/目录结构,通过一个或多个命令FROM和RUN指令以层的形式进行组装Dockerfiles,并带有一些元数据,例如打开哪个端口或在容器启动时执行哪个文件。这就是全部。Docker的基本原理与经典的chroot监狱非常相似,只是更现代一些,顶部还有一些糖果。
FROM
RUN
Dockerfiles
如果我在运行版本9内核的主机OS上为该映像运行一个容器,Docker会表现出什么行为?那版本11呢?
如果内核可以运行Docker守护程序,则它应该可以运行任何映像。
有警告吗?
如上所述,包含依赖于最新内核功能的软件的Docker映像将无法在不具有这些功能的内核上运行,这不足为奇。Docker不会阻止您在较旧的内核上运行这样的映像,因为它根本不在乎映像中的内容,也不知道使用了哪个内核来创建映像。
我唯一能想到的是针对特定的CPU(例如Intel或Amd)手动进行积极的优化编译软件。这样的映像将在具有不同cpu的主机上失败。