Docker和虚拟机的区别

docker容器和虚拟机的共同点在于,都可以在宿主机上提供 虚拟化 环境,各个虚拟环境是相互隔离的

它们的主要区别在于

虚拟机是base在硬件层上的,也就是硬件级别的虚拟化,虚拟机有独立的虚拟硬件,独立的虚拟bios,独立的虚拟驱动

而docker base在rootfs层上的

Linux系统的最底层是 系统kernel,一个典型的Linux启动需要两个File system

  • bootfs
  • rootfs

bootfs (boot file system) 主要包含 bootloader 和 kernel, bootloader主要是引导加载kernel, 当boot成功后 kernel 被加载到内存中后 bootfs就被umount了

rootfs (root file system) 包含的就是典型 Linux 系统中的 /dev, /proc, /bin, /etc 等标准目录和文件。

由此可见对于不同的linux发行版, bootfs基本是一致的, rootfs会有差别, 因此不同的发行版可以公用bootfs 

如果你的应用需要特定的系统内核例如只能运行在 Linux 内核2.6上,那么此应用不适合使用docker,此时应该选择虚拟机方案

大多数的应用,都不依赖于内核
Send a Message