基于中标麒麟高级服务器操作系统7.4的docker入门教程1一——docker基本概念以及历史

一、Docker产生背景以及历史

众所周知,Linux在早已存在LXC(Linux Container)的概念。LXC即系统默认利用namespace和cgroup实现的轻量级虚拟化机。LXC利用namespace实现类似于虚拟机的分隔,利用cgroup实现资源分配。现在流行的容器引擎有docker和rocket,其中出名的则为docker。docker公司发展是有dotCloud公司内部项目演化而来。

docker引擎发展

可以理解,docker就是一款容器引擎,利用其相关的工具实现容器、镜像的管理和应用。

容器生态
容器生态

由上图可见,容器生态十分丰富,从最底层的物理硬件,到虚拟化的云平台,到操作系统,到容器引擎,到编排服务工具以及开发流等。完整的容器生态将给整个云生态带来各个层面的改变,更加快捷、高效、省心的运维等。

虚拟机和容器的区别

容器是一种轻量级的虚拟化技术,那么与传统虚拟机的区别呢?

由上图可见,左图虚拟机的Guest OS层和Hypervisor层在docker中被Docker Engine层所替代。虚拟机的Guest OS即为虚拟机安装的操作系统,它是一个完整操作系统内核;虚拟机的Hypervisor层可以简单理解为一个硬件虚拟化平台,它在Host OS是以内核态的驱动存在的。 
虚拟机实现资源隔离的方法是利用独立的OS,并利用Hypervisor虚拟化CPU、内存、IO设备等实现的。例如,为了虚拟CPUHypervisor会为每个虚拟的CPU创建一个数据结构,模拟CPU的全部寄存器的值,在适当的时候跟踪并修改这些值。需要指出的是在大多数情况下,虚拟机软件代码是直接跑在硬件上的,而不需要Hypervisor介入。只有在一些权限高的请求下,Guest OS需要运行内核态修改CPU的寄存器数据,Hypervisor会介入,修改并维护虚拟的CPU状态。 

由上可以对比虚拟机和容器的区别,那么实际中性能对比如何,下表所示

特性

容器

虚拟机

启动

秒级(1s

几十秒级(18s

硬盘使用

一般为MB195MB

一般为GB41GB

性能

接近原生

弱于宿主

系统支持量

上千个

一般几十个

由此可见,容器在某些领域有如下表所示的优势。

优势

更高效的利用系统资源

更快速的启动时间

一致的运行时环境

持续交付和部署

更轻松的迁移

更轻松的维护和扩展

二、Docker基本概念

容器是一个或多个进程及这些进程所能访问的资源的集合。下图可以形象的说明容器的分层的概念。

容器的分层

 

docker主要包含三个概念

1、镜像

镜像可以理解为一个或多个应用组成的一个“虚拟机”模板。用户可以直接利用此镜像直接启动虚拟机,不需要自己额外进行相关部署。例如,我希望部署一个gitlab环境,我可以直接从仓库中将gitlab仓库部署到本地即可实现之前复杂的部署过程。目前镜像包括三大类:基础镜像(即OS层),应用镜像(基础镜像上添加的应用,例如tomcat),场景应用镜像(包含多个复杂的应用的镜像)。

由上可见,镜像有分层的概念。

最基础的为基础镜像,即运行时环境和基础的OS环境,例如目前中标麒麟高级服务器操作系统的镜像也存在共有的容器仓库中;

其次为上一层,即在OS层上部署一层新的应用,然后打成镜像发布,此时对外的则直接为应用本身;

镜像中上层对下层是只读权限,没有修改权限,即如果你已经确定好基础层,此时在第二层应用是希望修改,已经不可能了。这种属性保证了镜像的不可修改性,有利于保持特定环境,易于环境迁移。

2、容器

容器可以理解为镜像的一个实例,假如镜像是一个结构体类型,容器则是其中某个临时的实例对象。由此可见,容器是临时的,其中内部的数据是随着容器销毁而消失的。

3、镜像仓库

镜像仓库则更容易理解,即为存储镜像的一个仓库。有已经公开的dockerhub,也可以自己创建自己的私有仓库。有了仓库后,我们则可以类似于git的方式获取、上传镜像。

上面三个为容器使用中最重要的三个概念,三个流程图可以参考下图所示

镜像、容器以及仓库关系

三、Docker的应用场景

1、微服务架构(现在回更多融合k8s一起)

2、云化的应用

本文的主要目的就是了解docker入门知识,后续具体原理请参考后面相关博文。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章