在Docker容器中运行不同的Linux操作系统?
一直在努力学习Docker,让我感到困惑的是Docker容器中实际运行的Linux(对于主机OS)的不同风格。
如果我们假设我的Docker主机正在运行RedHat,并且我从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