虚拟化 和 Docker

目录

虚拟化 和 Docker

一、背景

二、虚拟化

虚拟化简介

虚拟化作用

虚拟化技术发展

CPU的时间分片

CPU虚拟化瓶颈

虚拟户工作原理

虚拟化类型

全虚拟化和半虚拟化

虚拟化功能

虚拟化的优缺点

三、Docker

Docker是什么

Docker使用场景

Docker的意义

Docker三大组件

Docker引擎(Docker Engine)

六大名称空间

资源控制 —— cgroups

容器特性

容器小的架构体系 

四、Docker 和 虚拟化的区别

 五、Docker 有哪些优势? 和虚拟化比有什么优势?


虚拟化 和 Docker

一、背景

以linux而言,linux操作系统会有一个主进程pid=1派生出其他进程来控制不同服务。例如: (pid=2,Python pid=3,Java pid4,Php pid5)三个服务可能会相互影响。使用者期望将这三个不同的服务,跑在不同的运行时环境中实现相互不影响,同时不会增加服务器成本,延伸出能否将这三种服务分别封装起来。KVM虚拟化技术,实现了一个操作系统模拟多个操作系统/不同的运行时环境。随着技术发展,虚拟化技术开销较大。(例如:只要运行一个py脚本,想要使用虚拟化方式实现,还需要安装一个操作系统,并不方便/合理),延伸出容器技术

虚拟化层的抽象层(用户层)剥离,使用docker engine来替代(来宾操作系统去除),只要通过引擎就可以直接连接到宿主机操作系统中,极大减小了开销

二、虚拟化

虚拟化简介

通过虚拟化技术将一台计算机虚拟为多台逻辑计算机,在一台计算机上同时运行多个逻辑计算机,同时每个逻辑计算机可运行不同的操作系统。应用程序都可以在相互独立的空间内运行而互相不影响,从而提高计算机的工作效率

①在一个操作系统中(win10)模拟多个操作系统(centos、win10、suse),同时每个操作系统可以跑不同的服务(ngint tomcat),从而实现一台宿主机搭建一个集群(从整体)

②通过软件/应用程序的方式,来实现物理硬件的功能(ensp)

以软件形式实现物理设备的功能(二层交换机、路由器、三层交换机等)

虚拟化作用

将应用程序和系统内核资源进行解耦,以操作系统级别进行隔离,目的是提高资源利用率

虚拟化技术发展

①1961年,IBM709机器实现了分时系统,将CPU占用切分为多个极短的时间片(1/100sec)每一个时间片执行不同的工作,通过对这些时间片进行轮询从而将一个CPU伪装成多个CPU

②1972年,IBM正式将system370机的分时系统命名为虚拟机

③1990年,IBM推出的system390机支持逻辑分区(将一个CPU分为多份,相互独立,也就是逻辑分割)

④Xen 2003年问世,是一个外部的hypervisor/VMM程序(虚拟机管理程序),能够控制宿主机和给多个客户机分配资源

⑤KVM: 2007年问世。现已内置在kernel内核中的

⑥Xen支持的虚拟化技术:全虚拟化,平虚拟化

⑦KVM:支持的虚拟化技术:全虚拟化

CPU的时间分片

CPU虚拟化

① 正常每个任务以轮询的方式去处理,这个时候一个CPU一个整体

②以下是针对的CPU单位时间内的一个资源。按时间划分,1秒划分成10个0.1秒,每个0.1秒可以全力处理10单位的任务。在1秒内,都在全力工作

③cpu 1s全力运转的性能,逻辑分割成分成了10份,可以理解为在单位时间内可以处理10个任务,每一个0.1s cpu是满的。原先分片前100M以下的任务一次只可以处理1个,现在100M的任务一次可以处理10个。这就是时间分片的概念

④虚拟化作用:缓解/解决了资源利用率的问题

CPU虚拟化瓶颈

 

cpu分片后每个任务处理性能会打对折

如果是50m及50m以下的任务的话,虚拟化后的,1s模拟10个cpu,可以处理10个。虚拟化后的性能更高

如果是50+m的任务的话,物理硬件的性能就会比虚拟化的性能高了。虚拟化的cpu会卡顿。所以在极度吃资源的情况下,例如mysql高并发这种,就不适合用虚拟化

虚拟户工作原理

虚拟机管理器功能:调用资源

两大核心组件:QEMU、KVM

QEMU:

①可以理解为队列,核心目的是**调用资源内核中的资源**,需要把KVM逻辑分割出来的资源运输给QEMU,再给虚拟机

②QEMU它并不是直接调用,而是用I/O方式调用,QEMU把资源调用来的过程借用ioctl,QEMU借助libvirt这个工具调用ioctl,再通过接口,给虚拟机应用程序

KVM:

①用来逻辑分割物理资源,抽象化为虚拟化资源,根据VMM里的配置,会逻辑分割出多少G,给应用程序,去进行虚拟化

②只接受来自QEMU的请求指令。对于应用程序直接过来的敏感指令会拦截,然后通过接口发给QEMU,让QEMU判断是否需要执行,可以的话,再下来,不可以的话,打回去,不执行该敏感指令

对于workstation而言——》硬件辅助虚拟化,表现形式在处理器里面有一个虚拟化引擎,可以勾取硬件辅助虚拟化,看到虚拟接口/dev/kvm,可以加强辅助调用,在应用程序需要频繁调用的时候,需要开启。比如openstack

虚拟化类型

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

半虚拟化:需要修改操作系统

直通:直接使用物理硬件资源

全虚拟化和半虚拟化

 

全虚拟化:基于硬件为基础以软件的形式模拟硬件设备(在一定程度上解决了性能利用率的问题)

半虚拟化:趋近于物理设备的性能 (在提高利用率的同时,尽可能的提高性能)

全虚拟化:KVM——产品 vmware(资源损耗大)

半虚拟化:EXSI——产品 workstation vsphere

虚拟化功能

①在一个操作系统内,模拟多个操作系统

② 以软件的方式模拟物理设备的功能

虚拟化的优缺点

优势

①集中化管理(远程管理、维护)

②提高硬件利用率(物理资源利用率低-例如峰值,虚拟化解决了"空闲"容量)

③动态调整机器/资源配置(虚拟化把系统的应用程序和服务硬件分离、提高了灵活性)

④高可靠(可部署额外的功能和方案,可提高透明负载均衡、迁移、恢复复制等应用环境)

劣势

①前期高额费用(初期的硬件支持)

②降低硬件利用率(特定场景-例如极度吃资源的应用不一定适合虚拟化)

③更大的错误影响面(本地物理机down机会导致虚拟机均不可用,同时可能虚拟机中文件全部损坏)

④实施配置复杂、管理复杂((管理人员运维、排障困难)

⑤一定的限制性(虚拟化技术涉及各种限制,必须与支持/兼容虚拟化的服务器、应用程序及供应商结合使用)

⑥安全性(虚拟化技术自身的安全隐患)

三、Docker

Docker是什么

是一种轻量级,“虚拟机”

在Linux容器里运行应用的开源工具(容器引擎)

Docker使用场景

①打包应用程序简化部署

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

例:服务器从腾讯云迁移到阿里云

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

④部署微服务

⑤提供PASS产品(平台即服务)

Docker的意义

把容器技术做成了标准化平台

①docker引擎统一了基础设施环境——docker 容器环境

(引擎)

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

(镜像:封装的某一个时刻的服务/应用状态)

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

(容器:应用跑起来的状态,正常提供服务的状态—运行时)

Docker三大组件

镜像:模块(一组资源集合,包含了应用程序包,应用程序相关的依赖包,运行程序所需要的的基础环境)

容器:基于镜像,运行状态/运行时状态

仓库:存放镜像模块(公共仓库:docker、私有仓库:registry harbor)

Docker引擎(Docker Engine)

Docker Engine是具有以下主要组件的c/s客户端-服务器应用程序

server端∶服务器是一种长期运行的程序,称为守护程序进程( dockerd命令)

CLIENT端:REST API,它指定程序可以用来与守护程序进行通信并指示其操作的接口。命令行界面(cLI)客户端(docker命令)

docker run 

docker start

docker rm

六大名称空间

cgroups:管理—管理Linux内核中资源管理的模块,管理一些系统资源

namespace:资源隔离—用容器技术封装

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

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

pid:进程编号

uts:主机名和主机域

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

net:网络设备,网络协议栈,端口等

资源控制 —— cgroups

①六种名称空间是由cgroups管理的

②最后一种centos的cgroups管理版本是3.8版本,3.6和3.5用不了

③cgroups 管理linux内核态中资源管理的模块

④cgroups 管理一些系统资源

⑤不是docker原生的

容器特性

特性:性能损耗10-20%

优点:

灵活:即使是最复杂的应用也可以集装箱化

轻量级:容器利用并共享主机内核

可互换:可以即时部署更新和升级

便携式:可以在本地构建,部署到云,并在任何地方运行

可扩展:可以增加并自动分发容器副本

可堆叠:可以垂直和即时堆叠服务

容器小的架构体系 

四、Docker 和 虚拟化的区别

 五、Docker 有哪些优势? 和虚拟化比有什么优势?

docker把容器化技术做成了标准化平台,只要安装了docker引擎,就能使用docker

使用docker有什么意义(实现了3个统一)

docker引擎统一了基础设施环境-docker环境——image——封装一一个简易的操作系统(3.0+G)
docker引擎统一了 程序打包(装箱/封装-类比于集装箱)方式-docker镜像——images
docker引擎统—了程序部署(运行)方式-docker容器——基于镜像——运行为容器(可运行的环境)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值