因此,我在许多地方都读到了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!)
参见“ 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