• 虚拟机、容器与Docker


    虚拟机(Virtual Machine)与容器技术(Container)都是虚拟化技术,两者的区别在于虚拟化的程度不同。

    我们常常把Docker与容器联系在一起,但请注意:Docker≠容器

    Docker是一款开源的Linux软件,基于容器技术的工具。Docker不是虚拟化技术,它的作用是帮助用户使用已经内置到操作系统中的容器技术。

    下面我们将介绍虚拟机与容器之间的区别,以及Docker软件。 

    一、虚拟机与容器

    虚拟机与容器的区别,在于vm多了一层guest OS,虚拟机的Hypervisor会对硬件资源也进行虚拟化,而Container会直接使用宿主机的硬件资源。

    下面我们采用形象的比喻区分两者的隔离级别:

    服务器:比作一个大型的仓管基地,包含场地与零散的货物——相当于各种服务器资源。

    虚拟机技术:比作仓库,拥有独立的空间堆放各种货物或集装箱,仓库之间完全独立——仓库相当于各种系统,独立的应用系统和操作系统。

    容器:比作集装箱,操作各种货物的打包——将各种应用程序和他们所依赖的运行环境打包成标准的容器,容器之间隔离。

    二、虚拟技术对比

    1.隔离性:在隔离性上面,由于vm对操作系统也进行了虚拟化,隔离的更加彻底。而Container共享宿主机的操作系统,隔离性较差。

    2.运行效率:由于vm的隔离操作,导致生成虚拟机的速率大大低于容器Container生成的速度,因为Container直接利用宿主机的系统内核。比如openstack能够以10台/min的速度创建虚拟机,而Container可以做到在几秒钟之内创建大量容器,它们的启动速度是在数量级上的差距。

    3.资源利用率:在资源利用率上虚拟机由于隔离更彻底,因此利用率也会相对较低。

    因为虚拟机增加了一层虚拟硬件层,运行在虚拟机上的应用程序在进行数值计算时是运行在Hypervisor虚拟的CPU上的;另外一方面是由于计算程序本身的特性导致的差异。虚拟机虚拟的cpu架构不同于实际cpu架构,数值计算程序一般针对特定的cpu架构有一定的优化措施,虚拟化使这些措施作废,甚至起到反效果。

    三、容器与Docker

    Docker不是一种编程语言,也不是构建软件的框架。Docker是一个工具,可以帮助解决如安装、拆卸、升级、分发、信任和管理软件等常见问题。它是一款开源的Linux软件。

    Docker包括一个命令行程序(CLI)、一个后台守护进程和一组远程服务。它解决了常见的软件问题,并简化了安装、运行、发布和删除软件。

    这一切能够实现都是通过使用一项UNIX技术——容器

    1.容器的由来

    从历史上看,UNIX风格的操作系统都使用 jail  这个术语来形容一个修改过的运行时环境,以防止该程序访问受保护的资源。这个运行环境,自2005年Sun的Solaris 10 和 Solaris容器发布以后,容器已经成为首选的术语。这个运行时环境——容器,作用已经从防止对受保护资源的访问,扩展到隔离所有的资源,除非明确允许

    2.容器与Docker

    容器的使用已经是很长一段时间的最佳做法。但是手动创建容器,具有挑战性,且很容易出错。

    Docker的出现解决了容器技术的使用问题:任何使用Docker运行的软件其实是在一个容器内运行。Docker使用现有的容器引擎,用户可以更方便地获得容器。具体体现在你无需去关心容器本身,这样就可以免去接触容器技术的复杂性,直接使用容器技术的优势。这样节省了大量的时间、精力以及金钱,就能够使用强大的容器技术。



    参考链接

    • https://www.zhihu.com/question/48174633/answer/109868326 by water Cc
  • 相关阅读:
    【VS开发】CTimeSpan类
    【VS开发】CTimeSpan类
    【VS开发】【电子电路技术】PCI与PCIE主板插卡与插槽识别
    【VS开发】【电子电路技术】PCI与PCIE主板插卡与插槽识别
    【VS开发】PCIe体系结构的组成部件
    【VS开发】PCIe体系结构的组成部件
    【VS开发】【DSP开发】WinDriver简介(或介绍)
    转载 ------ 三次指数平滑法
    转载:二次指数平滑法求预测值的Java代码
    转载: 通过反射操作类的私有属性
  • 原文地址:https://www.cnblogs.com/mithrandirw/p/9026023.html
Copyright © 2020-2023  润新知