最初Docker for Linux利用命名空间cgroup原语在Linux平台上提供容器化解决方案。它使用LXC以及稍后runC来监禁docker进程。虽然他们正在扩展对Mac / Windows上docker的支持,但似乎他们正在采用一种不合理的解决方法,这超出了使用容器化而不是虚拟化的全部目的。
Docker Toolbox使用boot2docker Linux(基于Tiny Core的精简版)来托管docker容器。 boot2docker在Oracle Virtualbox上运行。
Docker for Mac在OS X Yosemite的原生虚拟化Hypervisor framework上运行Alpine Linux。接口是通过构建在Hyperkit(操作系统X端口xhyve)之上的bhyve来实现的。
Docker for Windows在Windows 10上的Hyper-V虚拟化框架上运行。
在传统虚拟机上使用docker(通常是容器)后面的reason开销可以忽略不计,并且接近原生性能。 Conainers必须重量轻才有用。
由于Docker for Mac / Windows依赖于幕后的一些虚拟化技术,在这些平台上使用docker仍然保留其相关性吗?不使用虚拟化来模拟容器化会超越切换到docker框架的整个目的吗?正如旁注,这article也支持我的观点。容器如何与虚拟机进行比较?
它们是互补的。 VM最适合用于分配块 硬件资源。容器在流程级别运行,这是 使它们非常轻巧,作为一个软件单元完美 递送
答案 0 :(得分:2)
由于Docker for Mac / Windows依赖于幕后的一些虚拟化技术,在这些平台上使用docker仍然保留其相关性吗?
当然。在这些平台上等待完整的本机容器支持,您仍然可以从docker的主要优势中受益:服务发现,编排(kubernetes / swarm)和监控。
这些服务更容易扩展为容器,就像单个虚拟机一样。
不使用虚拟化来模拟容器化会超越切换到docker框架的整个目的吗?
否,因为没有docker框架,您将留下一个 VM,其中 all 您的服务必须存在,而没有隔离和个人升级的好处。