• 虚拟机VSdocker


    虚拟机 vs docker

    kvm

    硬件虚拟化

    通俗讲:需要物理机硬件的支持,就是再一台物理机上模拟出多台的虚拟机,虚拟机可以安装不同的操作系统,虚拟机之间是有自己独立相互隔离的系统文件,用户权限,网络,进程等;

    docker

    进程虚拟化

    通俗讲:不需要物理机硬件支持,docker也可以直接云主机上直接运行,docker对linux系统中的进程进行封装隔离,拥有自己一套独立的文件系统、网络、主机名等;

    虚拟机对比docker优略之处:

    1、依赖与硬件,需要物理硬件支持,cpu开启VT虚拟化;docker只依赖于linux内核,可以再任何的linux系统中启动;

    2、启动速度慢,模拟硬件,需要执行开机启动流程,(bios自检、读取grup引导、加载内核、启动init systemed、系统初始化等)分钟级别;而docker是公用linux内核启动跳过繁琐的开机流程直接启动进程服务提供服务,秒级

    3、虚拟机耗费资源比较大,一个初始化的Linux系统的虚拟机要1个多G的大小,一台普通的服务器只能支持十几台虚拟机,而一台物理服务器最多可以启上百个docker容器;

    4、虚拟机性能不如docker好,因为docker是公用宿主机内核更接近真实的宿主机,要比模拟宿主机硬件的虚拟机性能好;

    虚拟化技术对比:

    KVM:全虚拟化,需要模拟各种硬件

    docker:严格来说不算是虚拟化技术,只是进程隔离和资源限制

    实例启动进程对比:

    在kvm虚拟机中执行top命令,看宿主机进程树,根本看不到top的进程

    在docker容器中,同样执行top命令,在宿主机进程数中直接可以看到top进程

    占用内容资源对比:

    KVM虚拟机一般会独占一段内存,即使闲置,其他虚拟机也无法使用。而容器可以只有一个内存上限,没有下限。如果它只使用1MB内存,那么它只占用宿主机1MB内存。宿主机可以将富余内存作为他用。

    docker:启动两个实例,才占用一点

    kvm:启动一个512M内存的实例,就占了这么多了

    实例的内核对比

    kvm的虚拟机内核无需与宿主机一致

    docker:实例内核和宿主机内核一致

    操作系统支持度对比:

    kvm:支持多种操作系统,除了linux,还支持windows,uninx、solaris等

    docker:只支持linux

    启动一个实例需要的时间对比

    lxc容器技术将操作系统抽象到了一个新的高度。直接从init启动,省去了硬件自检、grub引导、加载内核、加载驱动等传统启动项目,因此启动飞速。

    docker:秒级

    kvm:分钟级别

    镜像模板占用空间对比

    kvm:占用空间大

    [root@linux-node2 ~]# du -smh /var/lib/libvirt/images/generic.qcow2

    1.9G    /var/lib/libvirt/images/generic.qcow2

    docker:占用空间小

    磁盘读写性能对比:

    kvm

    docker

    网络性能测试对比

    kvm

    docker

    综合来说:docker比kvm更省资源,可以提供非常接近宿主机的性能,而kvm资源隔离比docker更高,kvm支持的操作系统类型更多

     

     

     

  • 相关阅读:
    初识多线程
    java开发中我们经常用到的一些名词
    gitHub提交代码
    Java-基础-HashMap
    Java-基础-LinkedList
    Java-基础-ArrayList
    Java-基础-JDK动态代理
    Java-基础-反射
    RabbitMQ-延迟队列
    RabbitMQ-TTL-死信队列_DLX
  • 原文地址:https://www.cnblogs.com/houjunjun437416/p/12016834.html
Copyright © 2020-2023  润新知