我一直在尝试学习 Docker,但令我困惑的一件事是,不同风格的 Linux(对于主机操作系统)实际上是如何在 Docker 容器中运行的。
如果我们假设我的 Docker 主机正在运行 RedHat 并且我从 Ubuntu 映像启动一个容器,那么以下情况是否正确?:
- 从逻辑上讲,如果 Ubuntu 映像占用空间约为 550MB,那么 Docker 守护进程实际上会(从映像注册表)下载 550MB 的 Ubuntu 映像来创建容器吗?
- 在容器中运行的 Ubuntu 实例本质上与我手动下载并安装相同版本没有什么不同吗?
我知道 Docker 容器共享主机操作系统使用的相同内核,并且 Docker 的基本点之一是使用底层操作系统提高容器的效率。因此,当您启动从与主机不同的 Linux 版本创建的容器时,实际会发生什么,我有点困惑。
我认为上一篇文章可能会帮助您更多地理解它 -Docker容器隔离,它关心底层Linux操作系统吗? https://stackoverflow.com/questions/29911415/docker-container-isolation-does-it-care-about-underlying-linux-os?lq=1.
问题的关键在于,如果主机操作系统是 RedHat,那么您在 Docker 容器中运行的任何 Linux 版本都将使用 RedHat 内核。在你的例子中是Ubuntu。
这归结为理解 Linux 之间的区别OS和一个LinuxImage。您不会在 Docker 容器内运行完整的 Ubuntu 操作系统,而是运行 Ubuntu 的映像。
为了你的问题,请思考:-
OS= 内核 + 文件系统/库
Image= 文件系统/库
在 Docker 容器内运行的 Ubuntu 映像只是 Ubuntu 文件系统/库 - 它不会包含 Ubuntu 内核。这在一定程度上解释了 Docker 容器利用底层主机的内核(除其他外)所获得的效率。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)