一直在尝试学习Docker,让我感到困惑的是,在Docker容器中实际上如何运行与主机操作系统不同的Linux。
如果我们假设我的Docker主机正在运行RedHat并且我从Ubuntu映像启动了一个容器,那么是否满足以下条件?:
我知道Docker容器与主机OS使用相同的内核,并且Docker的基本要点之一是它使用基础OS提升了容器的效率。因此,当您启动从与主机不同的Linux版本创建的Container时,我对实际发生的情况有些困惑。
我认为上一篇文章可能会帮助您进一步了解-Docker容器隔离,它是否关心基础Linux操作系统?。
问题的关键在于,如果主机操作系统是RedHat,则它是RedHat内核,无论您在Docker容器中运行的任何Linux构建都将使用该内核。在您的示例中为Ubuntu。
这归结为了解Linux 操作系统 和Linux 映像 之间的区别。您将不会在Docker容器中运行完整的Ubuntu OS,而是运行Ubuntu的映像。
就您的问题而言,请考虑:-
操作系统 =内核+文件系统/库 映像 =文件系统/库
在Docker容器中运行的Ubuntu映像只是Ubuntu文件系统/库-它不包含Ubuntu内核。这部分解释了您从Docker容器中获得的效率,该容器利用了底层Host的内核(除其他外)。