如果Docker在Mac上使用虚拟机运行,那么它相对于Vagrant有什么优势?

3

我在很多地方读到过这样的说法,即Docker更快、更高效,因为它使用容器而不是虚拟机,但当我在我的Mac上下载Docker时,我意识到它使用VirtualBox来运行容器。我相信在Linux机器上,Docker不需要VirtualBox,可以在Linux内核上运行。这是正确的吗?

回到原始问题。因为Docker使用单个虚拟机运行多个容器,而不像Vargrant为每个环境创建新的虚拟机,所以Docker是否仍然更快/更有效?

1个回答

4
我相信在Linux机器上,Docker不需要虚拟盒子,可以在Linux内核上运行。这是正确的吗?
是的,因此需要一个VirtualBox Linux VM(使用TinyCore发行版)
Docker仍然更快/更有效,因为它使用单个VM来运行多个容器,而不是Vargrant为每个环境创建新的VM吗?
是的,因为缺少模拟硬件和操作系统的Hypervisor:在这里,您可以启动多个容器,所有这些容器都直接使用内核(通过直接系统调用),而无需模拟操作系统。 (注:2018年5月,gVisor是另一种选择:模拟操作系统的容器!)

vm vs container

请访问 "Docker与普通虚拟机有何不同?" 了解更多信息。
当然,记住 Vagrant可以使用Docker提供程序。 这意味着您不必始终使用Vagrant来提供一个完整的虚拟机,而是可以使用镜像和容器。
Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.image = "foo/bar"
  end
end

请参见Vagrant docker provisioner


非常感谢您提供如此详细的答案。 - Yasin Yaqoobi

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