一尘不染

在Docker容器中运行不同的Linux操作系统?

docker

一直在尝试学习Docker,让我感到困惑的是,在Docker容器中实际上如何运行与主机操作系统不同的Linux。

如果我们假设我的Docker主机正在运行RedHat并且我从Ubuntu映像启动了一个容器,那么是否满足以下条件?:

  • 从逻辑上讲,如果Ubuntu映像占用空间约为550MB,那么Doc​​ker Daemon是否会从映像注册表中实际下载(价值550MB)Ubuntu映像以创建Container?
  • 容器中运行的Ubuntu实例与我手动下载并安装相同版本的实例基本没有区别吗?

我知道Docker容器与主机OS使用相同的内核,并且Docker的基本要点之一是它使用基础OS提升了容器的效率。因此,当您启动从与主机不同的Linux版本创建的Container时,我对实际发生的情况有些困惑。


阅读 992

收藏
2020-06-17

共1个答案

一尘不染

我认为上一篇文章可能会帮助您进一步了解-Docker容器隔离,它是否关心基础Linux操作系统?。

问题的关键在于,如果主机操作系统是RedHat,则它是RedHat内核,无论您在Docker容器中运行的任何Linux构建都将使用该内核。在您的示例中为Ubuntu。

这归结为了解Linux 操作系统 和Linux 映像 之间的区别。您将不会在Docker容器中运行完整的Ubuntu
OS,而是运行Ubuntu的映像。

就您的问题而言,请考虑:-

操作系统 =内核+文件系统/库
映像 =文件系统/库

在Docker容器中运行的Ubuntu映像只是Ubuntu文件系统/库-它不包含Ubuntu内核。这部分解释了您从Docker容器中获得的效率,该容器利用了底层Host的内核(除其他外)。

2020-06-17