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

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

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

  • 从逻辑上讲,如果Ubuntu映像足迹大约为550MB,那么Doc​​ker Daemon实际上是从映像注册表下载550MB值的Ubuntu映像以创建容器?
  • 是在容器中运行的Ubuntu实例与我手动下载并安装相同版本没有区别吗?
  • 我知道Docker容器共享主机操作系统使用的相同内核,并且Docker的基本要点之一是它使用底层操作系统的容器的效率提升。 因此,当你启动一个不同于主机的Linux版本创建的容器时,实际发生的情况我有点困惑。


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

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

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

    为了您的问题的目的,请考虑: -

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

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


    在Docker容器内部运行的Ubuntu镜像在所谓的该容器的用户空间中运行。 该映像可以对RedHat主机操作系统内核进行内核系统调用(作为从用户空间向某些用户操作的内核空间传输控制的一部分)。 由于核心内​​核是通用技术,因此即使从Ubuntu用户空间代码到Redhat内核代码进行调用,系统调用也是兼容的。 这种兼容性使得可以在可能都具有不同的基本OS映像的容器之间共享内核。

    链接地址: http://www.djcxy.com/p/18185.html

    上一篇: Run Different Linux OS in Docker Container?

    下一篇: Exposing a port on a live Docker container