在虚拟机之上使用Docker有什么意义?

11

初次接触 Docker……Docker 被描述为虚拟机的替代品。我现在已经阅读了一些内容,这听起来很有道理。但我不太明白为什么你要在虚拟机上使用 Docker,比如 AWS 现在提供 Beanstalk。

是否只是因为大多数托管都是基于 VM 的,而 Docker 给你灵活性,所以即使它没有替换 VM,(取决于用例)还值得使用?


你可能会发现这篇文章有用 - https://dev59.com/9mQo5IYBdhLWcg3wdPAa - Ben Whaley
已经阅读,谢谢 ;) - nashape
3个回答

6
我们的使用案例是,您可以在真实计算机、虚拟机、不同操作系统等上使用相同的Docker镜像,并拥有相同的受控环境。即使您只打算在一种类型的计算机上运行它(例如在EC2虚拟机上),您仍然可能在笔记本电脑或台式机上开发它,因此使用它可能是有意义的。而且好处是,Docker的开销非常小(至少这是我们的想法),因此即使在虚拟硬件上运行时也不会影响性能。这与“真正”的虚拟机形成对比(没有恶意,但听起来很好:)),后者在类似场景下会带来很大的开销。

非常灵活。很酷,最好再花点时间学习Docker,谢谢。 ;) - nashape

4
根据基础设施副总裁Eric Brewer的说法,谷歌所有的东西都在Linux容器中运行。但不是所有谷歌的东西都在虚拟机中运行。当需要不同的操作系统时,会使用KVM,而公共计算平台服务(目前)在虚拟机内运行Docker,可能是为了更强的隔离和控制。否则,谷歌的大多数容器都在裸机上运行。为什么要增加额外的开销呢?如果您有不同的看法,请纠正我。在企业中,VM与容器的比例可能是99比1。到什么时候会变成30/70或20/80呢?虽然Kubernetes和其他容器编排工具可能永远无法达到vSphere的精益和易用性,但我现在可不想成为虚拟化供应商。

4
任何第一次接触容器世界的人都会想知道,在虚拟机之上使用Docker有什么意义?我相信我不是唯一一个有这种疑问的人。
虽然这个问题可以很简单地回答,正如大家所指出的,容器只是在虚拟机内部运行,就像目前大多数云服务提供商所做的那样,以确保应用程序的隔离。但众所周知,转向容器并不能简单地提供虚拟机所具备的安全性。这就是为什么容器运行在虚拟机之上的原因,以利用由虚拟化监控程序提供的已经建立和验证的安全性。
是的,Linux上改进的容器安全性和隔离性已经达到了一个程度,以至于人们可以在没有使用虚拟机进行隔离的情况下使用裸金属容器服务。IBM的Bluemix云服务就是一个很好的例子。Bluemix在公共Bluemix云服务上构建了一个托管的容器服务,应用程序之间没有虚拟机隔离。
像VMWare、Intel、Hyper这样的公司正在努力构建基于虚拟机的快速框架,以实现Docker API的速度和虚拟化监控程序安全性的结合。
然而,为了保持容器的敏捷优势,每个虚拟机中都运行着多个容器。对于更关注安全性的组织来说,他们可能会使用虚拟机来分隔运行在不同安全级别上的容器。例如,在银行业中,处理客户账户和支付信息的容器可能会被安排在与面向用户的网站不同的节点上运行。

1
但是 Linux/arm64 和 Linux/amd64 的冷战仍然存在,这就是 Docker 的限制。 - TheExorcist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接