kvm虚拟化和docker介绍

一、kvm虚拟化

1、介绍

虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机(对计算机物理资源的抽象,实现资源的模拟、隔离和共享)。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率

简单来说就是之前我们所用的物理机器只有一台,我们在逻辑上将他划分成多个,从而实现快速,高效的作用

2、虚拟化类型

全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用

半虚拟化:需要修改操作系统(一半软件一半硬件)

直通:直接使用物理硬件资源(需要设备支持,还不完善)

3、工作原理

Guest: 客户机系统,包括CPU (vCPU) 、内存驱动(Console、 卡、I/O设备驱动等),被KVM置于-种受限制的CPU 模式下运行。
KVM内核模块模拟处理器和内存以支持虚拟机运行
Qemu 主要处理I/O以及为客户提供一个用户空间/dev/kvm 工具ibvirt来进行虚拟机管理
ioctl (定义) 专用于设备输入输出操作的系统调用
libvirt: KVM管理工具

4、工作流程

用户模式的Qemu利用接口libkvm通过ioctl系统调用进入内核模式
KVM驱动为虚拟机创建 虚拟CPU和虚拟内存
然后执行VMLAU.NCH指令进入客户模式,装载Guest OS并运行
Guest OS运行过程中如果发生异常,则暂停Guest OS的运行并保存当前状态同时退出到内核模式来处理这些异常
内核模式处理这些异常时如果不需要I/O则处理完成后重新进入客户模式。如果需要I/O则进入到用户模式,则由Qemu来处理I/O,处理完成后进入内核模式,再进入客户模式
 

二、docker

1、docker介绍

docker是一个开发,交付,运行的开发平台,它把应用程序和基础架构分开,从而达到能够快速交付的效果

2、使用docker的意义

docker引擎统一了基础设施环境-docker环境

docker引擎统一了程序打包(装箱)方式-docker镜像

docker引擎统一了程序部署(运行)方式-docker容器

镜像:封装的某一个时刻的服务/应用状态
容器:应用跑起来的状态(正常提供服务的状态-运行时)

3、使用场景

打包应用程序简单部署

可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦)

持续集成和持续交付(CI/CD):开发到测试发布

部署微服务

提供PAAS产品(平台即服务){OpenStack的云主机类似于阿里云的ECS,属于IAAS、Docker (K8S)属于PAAS}

4、架构

Docker 使用客户端-服务器架构,包含了三个主要部分:dockerd守护进程、REST API接口层、cli接口层(管理容器、镜像、 络、存储等等)

Docker 客户端与 Docker 守护进程通信,后者负责构建、运行和分发Docker 容器等繁重的工作

Docker 客户端和守护进程可以运行在同一个系统上,或者您可以将一个 Docker 客户端连接到一个远程 Docker 守护进程

Docker 客户端和守护进程通过 UNIX 套接字或 络接口使用 REST API 进行通信

组件:

镜像:镜像是一个用来构建容器的只读模版,通常一个镜像会依赖其他的镜像,创建镜像需要创建一个 Dockerfile 文件。每个Dockerfile定义镜像文件中的一层,当定义发生变化的时候,只需要更新着一层的文件即可

镜像仓库:默认情况下,容器中的应用生成的所有文件都存放在一个可写的容器层,意味着这些数据的生命周期和容器保持一致,一旦容器重启数据就丢了。另外,这些文件与容器高度关联,想要将这些文件分享给其他的容器或者设备非常困难

容器:容器是一个运行时状态下的镜像,通过docker命令我们可以创建、启动、停止、删除容器,

5、container和VM区别

不同点 container VM
启动速度 秒级 分钟级
运行性能 接近原生(直接在内核中运行) 50%左右损失
磁盘占用 MB GB
数量 成百上千 一般几十台
隔离性 进程级别 系统圾别(更停底)
操作系统 主要支持Linunx 几千所有
封装程度 只打包项目代码和依赖关系,共享宿主机内核 完整的操作系统,与宿主机隔离

6、 名称空间

mount文件系统,挂载点,一个文件系统内,不能重复挂载一个指定目录

user操作进程的用户和用户组

pid进程编

uts主机名和主机域

ipc信 量、消总队列,共享内存(不同的应用调用内存资源的时候应该使用不同的内存空间)

net 络设备、 络协议栈、端口等

7、docker优势

docker把容器化技术做成了标准化平台CAAS (docker 统一/指定了容器化技术的标准化平台)使用

docker引擎统一了基础设施环境-docker环境》image 》封装一个简易的操作系统(3.0+G )

docker引擎统一了程序打包(装箱/封装-类比于集装箱)方式-docker镜像》images

docker引擎统一了程序部署(运行〉方式-docker容器》基于镜像》运行为容器(可运行的环境)

实现了一次构建、多次、多处使用

8、docker引擎

Docker Engine是具有以下主要组件的c/s客户端-服务器应用程序:
server端∶服务器是一种长期运行的程序,称为守护程序进程( dockerd命令)
CLIENT端﹔REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口

命令行界面(CLI)客户端(docker命令)
docker run、docker start、docker rm

三、实操

1、安装

2、安装加速器(框内复制进去)

3、 络优化

4、可选项:配置文件修改(生产经验)

5、查看版本信息

6、镜像操作docker run hello-world

总结

run :
pull dockerhub仓库中项目/库/镜像、start hello-world-image
1、docker client 客户端连接到了服务端(服务端是以一个守护进程的形式跑在操作系统里面的〉restful api典型的c/s架构
2、由docker 服务端的守护进程从docker hub 上下载了镜像(PS:服务端会先检查本地系统是否有这个镜像)
3、服务端创建了一个新的容器,然后从拉去的这个镜像启动了一个容器,容器执行了脚木/可执行程序让我们可以查看/使用(client)
4、docker 服务端把这些信息流〈传递)返回到客户端并展示出来,(展示在终端上)
docker client可以是多种形式,比如”docker”命令工具所在的终端

 

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8587 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月22日
下一篇 2021年10月22日

相关推荐