我明白了虚拟机和容器之间的巨大区别。但这让我对 Ubuntu 容器如何存在感到困惑。这对我来说感觉很矛盾,因为 Ubuntu 是一个操作系统。
https://hub.docker.com/_/ubuntu https://hub.docker.com/_/ubuntu
这不是一个完整的来宾操作系统吗?那么是什么让它成为虚拟机上的容器呢?或者容器和虚拟机之间的界限是否模糊?
我尝试过谷歌搜索,但我发现的唯一结果是经典的虚拟机与容器答案,这并不是我真正要问的,我不认为。
编辑 - 我已更新以尝试进一步澄清我的问题。
Docker 是一种在隔离的轻量级容器中运行应用程序的新方法。尽管它们是孤立的,但它们可以与其他组件集成。
效率并不是唯一的收益。当您打包应用程序以在 Docker 中运行时,您就获得了可移植性。您可以在笔记本电脑上的 Docker 容器中运行您的应用程序,它在数据中心的服务器上以及任何云中的虚拟机 (VM) 上的行为方式完全相同。
另一个重要推动因素是安全性。容器在应用程序之间添加了安全隔离,因此您可以确信,如果一个应用程序遭到破坏,攻击者无法继续破坏同一主机上的其他应用程序。
当您将应用程序打包为 Docker 映像时,它们都具有相同的形状 - 您可以用相同的方式部署、管理、保护和升级它们。
回答你的问题:
每个 docker 容器都运行自己的轻量级虚拟机,因此常规虚拟机之间的界限很模糊,但事实上 docker 容器并不像常规虚拟机那样适用于 GUI 应用程序。
你假设错了。您需要在 Dockerfile 中包含操作系统,然后再包含应用程序代码。但是,如果您只想运行一个简单的控制台应用程序,则根据您的应用程序,Docker Hub 上存在不同大小的操作系统映像,例如 Windows Nanoserver。那么您就不需要具有完整操作系统的虚拟机。您可以做的另一件事是在 dockerfile 中运行分阶段构建,这将编译您的应用程序,并且仅在映像中包含运行时环境,从而有效地减小其大小。
Docker 的主要目的是对新旧应用程序进行 docker 化,这意味着将它们拆分到逻辑上独立的容器中。当应用程序进行 docker 化时,它会获得安全性、依赖项分离、零停机维护、持续集成管道、可移植性、效率等优势。您无法使用常规虚拟机对应用程序进行容器化。 Docker 容器和常规虚拟机的用途和构建是不同的。
如果您正在使用 Windows 容器,我可以推荐以下书籍,以更好地了解 docker 的用途:https://www.packtpub.com/virtualization-and-cloud/docker-windows https://www.packtpub.com/virtualization-and-cloud/docker-windows
如果没有,那么 packt 会提供有关 Linux 上 docker 的其他书籍。
我希望这回答了你的问题 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)