如果docker使用虚拟机在Mac上运行,那么它比流浪汉有什么优势?

因此,我在许多地方都读到了Docker更快,更高效的原因,因为它使用了基于VM的容器,但是当我在Mac上下载docker时,我意识到它使用虚拟盒来运行容器.我相信在Linux机器上,docker不需要虚拟盒子,可以在Linux内核上运行.这个对吗 ?

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

最佳答案

I believe on a linux machine docker doesn’t need virtual box and can run on Linux Kernel. Is this correct ?

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

Is docker still faster/efficient because it uses a single VM to run multiple containers as opposed to Vargrant’s new VM for every environment ?

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

vm vs container

参见“ How is Docker different from a normal virtual machine?”.

当然,请记住该Vagrant can use a docker provider.
这意味着您不必总是为完整的VM配备Vagrant,而是映像和容器.

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

参见Vagrant docker provisioner.

相关文章

最近一直在开发Apworks框架的案例代码,同时也在一起修复Apw...
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。...
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,...
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...