关于Docker技术说明以及虚拟机技术说明对比

Posted @Kerry~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Docker技术说明以及虚拟机技术说明对比相关的知识,希望对你有一定的参考价值。

Docker技术说明

为什么会出现docker

例如我们开发一个App,项目初期是在本地搭建运行环境,当项目完成了,我们需要把代码、war等包提交给运维或者测试,那测试那边需要部署一套环境进行测试、运维那边也是需要部署一套环境进行上线,这时候往往就会出现一种情况:“在我本地运行是没有问题,在你这里就出现了问题”又或者“线下是没有问题,线上不行”,这样会导致程序一上线就崩溃,这个时候,大家就会想到了虚拟机(VMware),我们把虚拟机中的镜像文件或者整个虚拟机打包就可以了,但是想想一个虚拟机少有几个G,如果每个项目都虚拟机式部署,那么需要多大的内存,docker就是在这种背景下应运而生,Docker是一种容器技术,主要是为了解决运行环境以及配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术,实现资源和系统环境的隔离。
单个项目:解决运行环境以及配置一致问题。
多个项目:需要系统环境隔离,资源隔离问题。

科普一下虚拟机:云计算底层的基石就是虚拟机技术。云计算厂商购买回来一堆硬件搭建好数据中心后,使用虚拟机技术就可以将硬件资源进行切分,相当于把它们切割成为一个个文件夹,进行出售给用户使用。

虚拟机 VS docker 对比

虚拟机和 docker 最终都是实现资源和系统环境的隔离。但是大家实现的方式不一样。
先说一下关于 Host OSHypervisorGuest OS等概念。
Host OS是服务器虚拟化中的一个概念,有一种虚拟化技术是在物理机器上安装操作系统,然后在这个操作系统上安装Hypervisor(虚拟化CPU、内存、IO设备、硬件一套操作系统)虚拟化软件,这样就可以在物理机上虚拟化出若干分区,可以分别安装不同的操作系统。那么在这个物理机器上安装的操作系统就叫做Host OS,对应的安装在虚拟分区上的操作系统叫做Guest OS。

物理机器
Host OS 物理机器系统
Hypervisor 虚拟机管理器
Guest OS VM里面的操作系统

Guest OS:VM(虚拟机)里的的系统(OS);
Host OS:物理机里的系统(OS);

简单理解:
Hypervisor 帮你模拟虚拟环境的并且管理虚拟机,Guest OS理解为 Centos 系统。

虚拟机利用独立的Guest OS 操作系统,实现资源和环境隔离。
Docker没有独立的 Guest OS和 Hypervisor ,利用宿主机的内核,不需要和虚拟机一样重新加载操作系统内核。

(简单的理解:就是docker 共用一套的操作系统内核,虚拟机就是每一次都需要重新加载一套新的)

虚拟机的缺点

  1. 笨重,占内存,光是安装一个操作系统(OS)就几个G了 ;
  2. 启动速度慢,虚拟机启动分钟级别;
  3. 增加无关紧要的硬件 Hypervisor层 Hypervisor虚拟的整套软件、硬件、cpu等;
  4. 独立的 Guest OS ,实现环境隔离,增加了cpu、内存、资源消耗;
  5. 简单说明一下Guest OS是操作系统,Hypervisor是物理机器硬件资源管理器(管理虚拟机)
  6. 下面是虚拟机的架构图 和 docker架构图对比
    虚拟机架构图
    docker的架构图
    在这里插入图片描述

docker和虚拟机对比:

区别Docker虚拟机VM
操作系统与宿主机共用OS独立的虚拟机OS
存储大小镜像小镜像庞大
启动效率秒级分钟级别
硬件不需要加载需要加载
运行性能性能消耗小操作系统较大,消耗了内存和cpu
不需要Guest OS和 Hypervisor需要Guest OS和 Hypervisor

通过docker和虚拟机实现原理的比较,我们大致可以得出一些结论:

( 1)docker有着比虚拟机更少的抽象层。由于docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有优势。
(2)docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。我们知道,引导、加载操作系统内核是一个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了这个过程,因此新建一个docker容器只需要几秒钟。另外,现代操作系统是复杂的系统,在一台物理机上新增加一个操作系统的资源开销是比较大的,因此,docker对比虚拟机在资源消耗上也占有比较大的优势。
(3)docker容器没有自己的内核,使用的宿主机内核,而且没有进行硬件虚拟,因此容器比传统虚拟机更为轻便。
(4)容器之间隔离、容器之间的进程不会相互影响。

docker是什么

docker是一个用Go语言实现的开源项目,可以让我们方便的创建和使用容器,docker将程序以及程序所有的依赖都打包到docker container,这样你的程序可以在任何环境都会有一致的表现,这里程序运行的依赖也就是容器就好比集装箱,容器所处的操作系统环境就好比货船或港口,程序的表现只和集装箱有关系(容器),和集装箱放在哪个货船或者哪个港口(操作系统)没有关系。
因此我们可以看到docker可以屏蔽环境差异,也就是说,只要你的程序打包到了docker中,那么无论运行在什么环境下程序的行为都是一致的,程序员再也无法施展表演才华了,不会再有“在我的环境上可以运行”,真正实现“build once, run everywhere”。
此外docker的另一个好处就是快速部署,这是当前互联网公司最常见的一个应用场景,一个原因在于容器启动速度非常快,另一个原因在于只要确保一个容器中的程序正确运行,那么你就能确信无论在生产环境部署多少都能正确运行。

docker的理念

解决环境差异、一处打包、处处运行,解决跨平台运行环境问题。

docker能做什么

Linux Container 虚拟化容器技术,不是模拟一个完整的操作系统,相当于在以前的虚拟机系统做一个减法,只需要内核部分。可以理解为docker 就是一个精细版、精简版、小型的Linux系统,只需要内核部分。
(1)弹性容量,大规模调度。
(2)高效运行
(3)持续化集成。

以上是关于关于Docker技术说明以及虚拟机技术说明对比的主要内容,如果未能解决你的问题,请参考以下文章

docker 入门(二):docker 和 沙盒、虚拟机以及 Kubernetes 的关系

Docker容器技术的核心原理

Docker:物理机vs虚拟机,五方面详细对比!

docker全解

K8S 和 Docker 关系简单说明

Docker容器技术