虚拟化+docker基本概念以及安装部署
一:虚拟化介绍
1:概念
虚拟化:是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机(对计算机物理资源的抽象,实现资源的模拟,隔离和共享)在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机课运行不同的操作系统,并且应用程序都可以在相互独立的空间运行而 互不影响,从而显著提高计算机的工作效率。
虚拟化使用软件的方法重新定义划分资源,可以实现资源的动态分配,灵活调度,跨域共享,提高资源利用率。
功能:在一个操作系统内,模拟多个操作系统
以软件的方式模拟物理设备的功能
2:虚拟化的本质
分区:在整个物理服务器上运行多个虚拟机
隔离:在同一服务器上的虚拟机相互隔离
封装:整个虚拟机都保存在文件中,可以通过移动文件的方式迁移
相对硬件独立:无需修改任何服务上运行的虚拟机
3:虚拟化分类
基于平台的平台虚拟化
在同一个平台上,可以虚拟多个同一平台,每个平台可以运行自己独立完整的操作系统
基于操作系统 的操作系统虚拟化
把操作系统及其提供的系统调用资源,那虚拟化就表现为操作系统虚拟化。
例如linux容器虚拟化技术,就是在同一个linux操作系统上,虚拟出多个同样的操作系统,每个应用认为自己运行在一个独立的os
虚拟化管理程序Hypervisor(VMM)
一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件,也称VMM(Virtual Machine Monitor),即虚拟机监视器。
hypervisor是一种在虚拟环境中的“元”操作系统。它们可以访问服务器上包括磁盘和内存在内的所有物理设备。hypervisor不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行hypervisor时,它会加载所有虚拟机客户端的操作系统,同时会分配给每一台虚拟机适量的内存、CPU、网络和磁盘
虚拟机管理器功能:调用资源
两大核心组件:QEMU、KVM
QEMU:可以理解为队列,核心目的是调用资源内核中的资源,需要把KVM逻辑分割出来的资源运输给QEMU,再给虚拟机,并不能直接调用,而是用i/o方式调用,QEMU把资源调用来的过程借用ioctl,QEMU借助libvirt,再通过接口,给虚拟机应用程序。
KVM:用来逻辑分割物理资源,抽象化为虚拟化资源,根据vmm里的配置,会逻辑分割出多少G,给应用程序,去进行虚拟化
只接受来自QEMU的请求指令,对于 应用程序直接过来的铭感指令会拦截,然后通过接口发给QEMU,让QEMU判断是否需要执行,可以的话,再下来,不可以的话,打回去,不执行该敏感指令
半虚拟化
对客户端操作系统的内核进行修改,将运行在Ring0上指令转为调用Hypervisor
硬件辅助全虚拟化:表现形式在处理器里面有一个虚拟化引擎,可以勾取硬件辅助虚拟化,看到虚拟接口、dev/kvm,可以机枪辅助调用,在应用程序需要频繁调用的时候,需要开启,比如openstack
全虚拟化:将物理硬件资源全部通过软件的方式抽象化,最后进行调用
kvm》》产品vmware
半虚拟化:需要修改操作系统
exsi》》workstation vsphere
直通:直接使用物理硬件资源
二:docker
docker是一种轻量级的虚拟机,docker是一个用于开发、交付、和运行应用程序的开放平台。
在linux容器里运行的开源工具:容器引擎,让开发者可以打包大量的应用及依赖包到一个可移植的镜像中,然后发布到任何流行的linux或者window机器中
logo设计
下面是一个蓝色的鲸鱼,上面拖着集装箱,鲸鱼可以作为宿主机,集装箱可理解为相互隔离的容器,每个集装i选哪个中都包含自己的应用程序,相互隔离且完整
设计宗旨:Bilid、Ship、and Run Any App,Anywhere
即通过对应用的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的一次封装,到处运行的目的,组件可以是应用、也可以是一套服务,甚至是一个完整的操作系统
使用docker的意义
docker引擎统一了基础设施环境–docker环境
docker引擎统一了程序打包(装箱)方式,docker镜像(把引擎放在镜像中,带着经i选哪个到处跑
docker引擎统一了程序部署(运行)方式–docker容器(利用引擎把这个镜像再去运行为之前的一摸一样的容器)
docker三大核心
镜像:一个面向docker容器引擎的只读模板
容器:从镜像创建的运行实例
仓库:镜像保留的地方
公有仓库:docker官方仓库
私有仓库:个人化、私有化的仓库、
总结:docker时容器管理工具,容器有镜像创建而来,镜像从仓库中获取而来,仓库分为公有、私有。
使用场景
1:打包应用程序部署简单
2:可脱离底层硬件任意移动(实现了应用的隔离,将应用拆分并进行解耦)例如:需要把服务器从腾讯云迁移到阿里云,如果采用的是 Docker 容器技术,整个迁移的过程只需要在新的服务器上启动我们需要的容器就可以了。
3:适合做为微服务的部署
4:适合持续集成和持续交付(CI/CD)开发到测试到发布
docker引擎
docker Engine是具有以下重要组件的(客户端-服务端)应用程序C-S架构
server:服务器是一种长期运行的程序,称为守护程序进程(docker命令)
client: