一直在努力学习Docker,让我感到困惑的一件事就是如何在Docker容器中实际运行不同版本的Linux(到主机操作系统).
如果我们假设我的Docker主机正在运行RedHat并且我从Ubuntu映像启动一个容器,则以下是真的吗?:
我知道Docker容器共享主机操作系统使用的相同内核,Docker的一个基本点是使用底层操作系统的容器效率提升.所以我对启动从不同于主机的Linux版本创建的Container时实际发生的事情感到困惑.
Jac*_*cko 57
我认为这篇上一篇文章可能会帮助你更多地了解它 - Docker容器隔离,是否关心底层Linux操作系统?.
问题的关键在于,如果主机操作系统是RedHat,那么它就是RedHat内核,它将被您在Docker容器中运行的任何Linux版本所使用,即.在你的例子中的Ubuntu.
这归结为了解Linux 操作系统和Linux 映像之间的区别.您不会在Docker Container中运行完整的Ubuntu操作系统,而是Ubuntu的映像.
出于你的问题的目的思考: -
OS =内核+文件系统/库
Image = filesystem/libraries
在Docker容器中运行的Ubuntu映像只是Ubuntu文件系统/库 - 它不包含Ubuntu内核.这部分解释了从Docker容器中获得的效率,该容器正在利用底层主机的内核(以及其他内容).
小智 6
Docker 容器内运行的 Ubuntu 映像在该容器的用户空间中运行。该映像可以对 RedHat 主机操作系统内核进行内核系统调用(作为某些用户操作的控制权从用户空间转移到内核空间的一部分)。由于核心内核是通用技术,因此即使从 Ubuntu 用户空间代码调用 Redhat 内核代码,系统调用也应该兼容。这种兼容性使得跨容器共享内核成为可能,这些容器可能都具有不同的基础操作系统映像。
| 归档时间: |
|
| 查看次数: |
15511 次 |
| 最近记录: |