什么时候应该使用 Docker,什么时候应该使用虚拟机? [复制]

Posted

技术标签:

【中文标题】什么时候应该使用 Docker,什么时候应该使用虚拟机? [复制]【英文标题】:When should I use a Docker and when should I use a Virtual Machine? [duplicate] 【发布时间】:2019-12-26 00:14:16 【问题描述】:

是否有关于何时使用 Docker 而非 VM 的指南? (反之亦然)

在我看来,像 nginx、Apache 或 Redis 这样的服务应该是 docker,但我不确定是否应该在 HPC 环境中使用 ElasticSearch docker。

Docker 总是比 VM 更好吗?

【问题讨论】:

【参考方案1】:

首先,它是一个容器; docker 是一个容器的实现,既不是第一个也不是最后一个。

虚拟机 (VM) 是容器的超集,因此问题不在于更好,而在于深度 - 即您需要多少隔离。在最微不足道的层面上,隔离就是要摆脱困扰宇宙的疯狂。确定您需要什么,将其转储到容器中,瞧,不再有兼容性问题。在这个层面,容器主要是关于包装;让包装变得神奇不会出错。只需确保您的简历是最新的。

在更深层次上,容器可以参与独立部署。这些工作,但通常需要大量的管理软件:编排软件 (k8s)、服务混乱 (istio :)、[A-Z]AAS。在这片荒野中的某个地方,它们与虚拟机相交,虚拟机在其他层中预先打包了许多概念,尽管使用不同的管理平台。

在虚拟机领域内,我们在主机的来宾中看到了连续的意识,从类似于容器(即高度依赖)到轻率地无知(即经典虚拟机)。这个领域的选择标准主要落在信任的领域——你越不信任客人,你就越想孤立它;或者访客对宿主环境的信任度越低,它就越想变得孤立。

审查;在隔离领域,容器和虚拟机占据了连续统一体的重叠极端。容器是管理打包的最轻量级的方式,但随着隔离需求的增加,VM 变得越来越有吸引力。在 VM 连续体中,信任和性能之间存在权衡。沿途的每一站都有大量的软件支持;但该软件(尚未)统一。

【讨论】:

以上是关于什么时候应该使用 Docker,什么时候应该使用虚拟机? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

C++虚函数

什么时候应该使用 Sql Azure,什么时候应该使用表存储?

什么时候应该使用 Microsoft.Owin 实现,什么时候应该使用 AspNetCore?

什么时候应该使用 JSF 组件,什么时候应该使用 html 标签? [关闭]

我们啥时候应该使用互斥锁,啥时候应该使用信号量

什么时候应该使用 var,什么时候应该使用 string、ulong、int 等 [重复]