Docker vs virtual machine

Docker overview

Docker是一个使用go开发的开源的应用容器引擎,其使用的开源协议是Apache2.0。
Docker具备以下一些优点:

  1. 快速一致的交付体验。
    Docker的架构依托docker engine是docker应用做到了任意操作系统的一致性。因此,你的应用,不论是处于何种操作系统,使用docker进行交付时,基本上能做到一次处理,处处交付。
    正是由于docker能磨平操作系统的差异性,在开发、运行过程中,可以做到配置一致。这点在多人协同时,显得尤其有优势。
  1. 响应式部署和扩展。
    Docker是基于容器的平台,它支持高度的可移植性。同时,docker非常轻量化。docker也支持运行多个副本。

  2. 相比vm,可以承载更多的工作负载。
    相比传统的虚拟主机,docker无需虚拟出一套操作系统,因此其在硬件成本上显得尤其节省。

Docker vs VirtualMachine

操作系统支持与架构

Docker vs VM
这张图阐述了docker与虚拟机的架构。每一个虚拟机都拥有着宿主机和虚拟机。当然寄托在宿主机上的虚拟机可以是任何系统,理论的基本上可以达成任何宿主机器都能获得任意操作系统的虚拟机。
而比较不一样的是,docker是基于容器化的,可以在单一的操作系统内核上执行更多应用的一种方案。然而,虚拟机如果想要获得不同操作系统的体验,就需要使用不同的操作系统的虚拟机。

安全性

虚拟机是一个基于宿主机的完全独立的解决方案,因此它需要一些权限在宿主机上运行。当然,虚拟机可以做到宿主机数据和虚拟机之间隔离。
而,docker则是运行在宿主机上的通过namespace隔离的应用。docker的运行需要root用户组,如果需要非root用户组执行,你可能需要做一些处理,这也是docker受人诟病的一点。

可移植性

其实,移植成本上上面已经提到过。显然,docker更容易移植。

性能

相比虚拟机,docker需要的资源更少。

其他

其他的比较在这里:

Compares Docker VirtualMachines
系统启动时间 秒级 分钟级
运行平台 独有的运行平台 基于Hypervisor
内存占用 无需为虚拟化付出更多的内存成本 基于操作系统分配
部署 一个镜像、一行命令 先上一个操作系统?
操作便捷性 一套基于docker的完整的生态 会用电脑就会整虚拟机

What can i use docker for?

What’s docker compose