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

一直在努力学习Docker,让我感到困惑的是Docker容器中实际运行着不同的Linux(对于主机操作系统)。

如果我们假设我的Docker主机正在运行RedHat,并且从Ubuntu映像启动一个容器,那么以下是真的吗?

  • 从逻辑上讲,如果Ubuntu映像的占用空间大约为550MB,那么Doc​​ker Daemon实际上是从映像registry中下载550MB的Ubuntu映像以创build容器?
  • 在容器中运行的Ubuntu的实例与我手动下载和安装相同的版本没有什么不同。

我知道,Docker容器共享主机操作系统使用的相同内核,而Docker的基本要点之一是使用底层操作系统的容器的效率提升。 因此,当你启动一个不同于Linux主机的Linux版本创build的容器时,实际上会发生什么,我有点困惑。

我认为这个以前的文章可能会帮助你更多地理解它 – Docker容器隔离,它是否关心底层Linux操作系统? 。

问题的关键在于,如果主机操作系统是RedHat,那么它就是RedHat内核,它将用于你在Docker容器中运行的任何Linux版本。 Ubuntu在你的例子。

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

为了您的问题的目的,认为: –

OS =内核+文件系统/库
Image =文件系统/库

在Docker容器中运行的Ubuntu镜像只是Ubuntu文件系统/库(而不是Ubuntu OS附带的内核)。 在容器中运行的Ubuntu镜像将使用Redhat内核。 这部分解释了您从Docker容器获得的效率,该容器利用底层主机的内核(等等)。