【问题标题】:If docker uses virtual machine to run on a mac then what is its advantage over vagrant?如果 docker 使用虚拟机在 mac 上运行,那么它比 vagrant 有什么优势?
【发布时间】:2015-12-09 13:21:28
【问题描述】:

所以我在很多地方都读过这篇文章,说 docker 更快、更高效,因为它使用容器而不是虚拟机,但是当我在我的 mac 上下载 docker 时,我意识到它使用虚拟盒来运行容器。我相信在 linux 机器上 docker 不需要虚拟机并且可以在 Linux Kernel 上运行。它是否正确 ?

回到原来的问题。 docker 是否仍然更快/更高效,因为它使用单个 VM 来运行多个容器,而不是 Vargrant 针对每个环境的新 VM?

【问题讨论】:

    标签: docker vagrant boot2docker docker-machine


    【解决方案1】:

    我相信在 linux 机器上 docker 不需要虚拟机并且可以在 Linux Kernel 上运行。这是正确的吗?

    是的,因此需要 VirtualBox Linux VM(使用 TinyCore 分发版)

    docker 是否仍然更快/更高效,因为它使用单个 VM 来运行多个容器,而不是 Vargrant 为每个环境提供的新 VM?

    是的,因为缺少Hypervisor 模拟硬件和操作系统:在这里您可以直接使用内核(通过direct system calls)启动多个容器,而无需模拟操作系统.
    (注:2018 年 5 月,gVisor 是另一种选择:容器,模拟操作系统!)

    在“How is Docker different from a normal virtual machine?”查看更多信息。

    当然,请记住Vagrant can use a docker provider
    这意味着您不必总是使用 Vagrant 配置成熟的虚拟机,而是使用映像和容器。

    Vagrant.configure("2") do |config|
      config.vm.provider "docker" do |d|
        d.image = "foo/bar"
      end
    end
    

    Vagrant docker provisioner

    【讨论】:

    • 非常感谢您提供如此详细的回答。
    猜你喜欢
    • 1970-01-01
    • 2017-09-17
    • 2018-04-06
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2017-03-25
    相关资源
    最近更新 更多