【发布时间】:2019-05-27 01:55:13
【问题描述】:
我明白虚拟机和容器之间的巨大差异。但这让我对 Ubuntu 容器如何存在感到困惑。由于 Ubuntu 是一个操作系统,我觉得这很矛盾。
https://hub.docker.com/_/ubuntu
这不是一个完整的客户操作系统吗?那么是什么让它成为虚拟机上的容器呢?还是容器和虚拟机之间的界限模糊了?
我试过用谷歌搜索,但我发现的唯一结果是经典的虚拟机与容器的答案,这并不是我真正想问的。
编辑 - 我已更新以尝试进一步澄清我的问题。
【问题讨论】:
-
简短回答:Docker 共享主机的内核和物理设备; VM 具有重复的内核和仿真硬件。 Docker 容器通常也不会运行捆绑到用户空间中的所有内容,而只会运行一些具有该用户空间可用的目标应用程序。 (它“看起来像” Ubuntu,但没有运行 systemd、cron、sshd……)
-
我更新了我的问题以尝试澄清。我不是在问虚拟机和容器之间的区别。但更何况像 Ubuntu 这样的整个操作系统怎么能成为一个容器呢,为什么不把它称为虚拟机呢。
-
“Ubuntu 的 docker 容器”不是“整个操作系统”;它不运行自己的内核。当然,它是整个操作系统的用户空间——但是,不管它是运行自己的 ring-0 还是仅仅作为其他人内核中的一堆命名空间,这正是区别所在。
-
@CharlesDuffy 回答了我的问题,谢谢。这是我在 Sack Overflow 上的第一篇文章,我不确定它为什么被否决。我认为链接的问题与我要问的问题不同。
-
@WinstonHenke,问题不在于编写代码,并且不能/不能合理地期望答案会改变 如何 你编写代码(也就是你如何进行软件开发的实践,这对于使其成为关于软件开发的“实用”问题至关重要),所以这里是题外话。 Stack Exchange 网络中还有其他站点可以很好地适应它,但它并不完全符合 SO 的准则。
标签: docker containers virtual-machine virtualization dockerhub