深入剖析虚拟化技术概念和应用场景

虚拟化,一是项技术~~,是一种资源解决方案。

虚拟化技术是将物理资源转变为逻辑上可以管理的资源,以打破物理结构之间的壁垒,使计算元件运行在虚拟的基础上,而不是真实的物理资源上。

通过虚拟化技术,可以将物理资源转变为逻辑资源(虚拟机),应用程序服务运行在虚拟资源上,而不是真实的物理机上。

VMware workstation 属于个人版虚拟化软件,称为虚拟机软件。将物理资源转变为多台虚拟机,应用软件运行在虚拟机中,各个虚拟机共享物理机的资源 (CPU,硬盘,网卡,内存,IO设备...)

虚拟化技术的落地,底层就必须有物理机支撑!

单纯的物理机器是不能直接虚拟化的,都需要虚拟化软件来实现。目前主流的虚拟化软件有:KVM,XEN,ESXI,HP-V,Docker,Virtual BOX等

虚拟化技术的应用场景示例

企业需求:部署一百套Nginx WEB服务,要求对外端口为80,要求独立服务器部署

  • 传统方案:采购一百台低配硬件物理机,每台物理机部署一套Nginx WEB服务

  • 虚拟化方案:采购10台高配硬件物理机,每台物理机虚拟10台虚拟机,每台虚拟机独立部署一套Nginx WEB服务

很明显,第二种方案,从成本、部署难度、维护等方面,第二种都是比第一种好的。

所以,虚拟化的意义: 对于硬件设备资源的最大化利用,降低企业各种费用成本,简化后期资源部署和维护,动态满足企业需求 ,基于虚拟化资源来代替待淘汰的物理资源

云计算技术概念和应用场景

深入剖析Docker虚拟化概念和底层原理

Docker简介

Docker是虚拟化技术的一种,也是目前使用比较多的一种。Go语言开发引擎

Docker利用“集装箱”(容器)的原理,将系统、开发软件包、依赖环境等统一打包到容器中,将整个容器部署至其他的平台或者服务器上。

容器技术:一种虚拟化的方案,和传统的虚拟机(通过中间层"guerst OS"运行服务)不同,Docker直接运行在操作系统之上。 因此容器虚拟化也被称之为操作系统虚拟化。Docker容器依赖于Linux内核特性,Namespace和Cgroups,所以只能运行在Linux之上。

官方定义:Docker是一个开元的应用容器引擎,让开发者可以打包他们的应用以及依赖到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化

容器是完全使用沙箱机制,相互之间没有任何接口(iphone的app也是这样),几乎没有性能开销;可以很容易在机器和数据中心运行。最重要的是,他们不依赖任何语言,框架甚至系统

Docker虚拟化技术比传统虚拟化技术的优点

假设基于传统虚拟化和Docker虚拟化部署Nginx WEB服务,两种方案部署如下:

  • 传统虚拟化:硬件服务器-HostOS-VMM-GuestOS-Nginx WEB服务

  • Docker虚拟化:硬件服务器-HostOS-VMM-Nginx WEB服务

传统的虚拟化,不能直接启动Nginx WEB,Docker可以直接启动Nginx WEB

如果是传统虚拟化技术,原本只需要很少资源的服务应用,就需要很大的“guestOS“资源来支撑真正的服务

Docker目标

  • 提供简单轻量级的建模方式(docker的启动是毫秒级的)

  • 职责的逻辑分离:开发人员只需要关注容器中运行的程序,运维人员只需要关注对容器的管理。Docker开发提高了开发程序和部署容器的一致性

  • 快速高效的开发声明周期:缩短代码从开发、测试到部署上线的生命周期

  • 鼓励使用面向服务的架构:docker推荐单个容器只运行一个应用程序/进程,这样就形成了一个分布式的应用程序模型,避免服务之间的互相影响。实现 高内聚 低耦合

Docker的使用场景

  1. 使用Docker容器开发、测试、部署服务。

    docker本身是轻量级的,所以本地开发人员可以构建、运行并分享docker容器,容器可以在开发环境中创建,然后提交到测试,在到生产环境。

  2. 创建隔离的运行环境

    在很多企业应用中,同一服务的不同版本可能服务于不同的用户,使用Docker很容易创建不同的环境来运行不同版本的服务

  3. 搭建测试环境

    有于Docker的轻量化,所以开发者很容易在本地搭建测试环境,用来测试程序在不同系统下的兼容性,甚至集群式的测试环境。

  4. 构建多用户的平台服务(PaaS)基础设施

  5. 即同软件即服务(SaaS)应用程序

  6. 高性能、超大规模的宿主机部署

Docker的基本组成

Docker基本组成:

  1. Docker Client 客户端

  2. Docker Daemon 守护进程

  3. Docker Image 镜像

  4. Docker Container 容器

  5. Docker Registry 仓库

  • Docker客户端/守护进程:

    docker是C/S架构的程序,docker客户端向服务端发送请求,守护进程处理完所有的工作,并返回处理结果。客户端对服务端的访问,既可以是本地,也可以通过远程

  • Docker镜像:

    docker镜像是docker容器的基石。跟ISO镜像类似,静止的模版,用于Docker容器的底层基础文件

    docker镜像是一个层叠的只读文件系统(联合文件系统):

    最低端是一个引导文件系统 bootfs

    第二层是rootfs,位于引导文件系统之上,可以是一种或多种操作系统(redhat/ubuntu等),在docker中,rootfs永远是只读方式,并且利用联合加载技术(union mount),加载更多的只读文件系统


  • Docker容器:

    docker容器通过docker镜像启动,是Docker镜像运行的实体,是活动的。

    当一个容器启动时,会再docker镜像的最顶层加载一个读写文件系统,docker中运行的程序就是在该层进行运行的,第一次启动是,初始化的读写层是空的,所有的写操作都应用在该层(从只读的底层复制到读写层(写时复制技术))

    Docker镜像和容器的关系,跟程序和进程的关系类似

  • Docker仓库:

    存放Docker镜像的地方,一般分为公共仓库和私有仓库,docker公司提供了一个自己的仓库"Docker Hub"

Docker的相关技术

Docker依赖Linux的内核特性有:Cgroup(控制组)和Namespace(命名空间)

  • Namespace

命名空间是一种封装的概念,在操作系统层面上,提供了系统资源的隔离,系统资源包括{进程、文件系统、网络等}。Linux实现命名空间的目的:为了实现轻量级虚拟化服务,在不同命名空间下的进程,彼此毫无关系。

docker使用了五种命名空间:

  1. PID 进程隔离

  2. NET 管理网络接口

  3. IPC 管理进程间通信

  4. MNT 管理挂载点,文件系统间的隔离

  5. UTS 管理内核和版本标示的隔离

  • Cgroup(Control Groups)

Cgroup对隔离的资源进行管理,是一种用来限制、记录,隔离进程组资源的机制。就是为了容器技术而生的。

Cgroup对资源的管理方式:

  1. 资源限制 如:对内存的分配上限

  2. 优先级设定 如:某个进程优先使用cpu时间片

  3. 资源计量 计算进程组使用了多少系统资源,尤其时在记费系统中

  4. 资源控制 将进程组挂起或恢复

Docker容器的能力:

  • 文件系统隔离:每个容器都有自己的root文件系统

  • 进程隔离:每个容器都运行在自己的进程环境中,互相不影响

  • 网络隔离:容器间的虚拟网络接口和IP地址都是分开的

  • 资源隔离和分组:使用Cgroups将CPU和内存之类的物理资源独立的分配给每个Docker容器

1 云服务的运营模式   IaaS(基础设施即服务):经营的是基础设施,比如阿里云服务器(只安装操 作系统)  PaaS(平台即服务):经营的是平台,比如 MySQL 开发平台(安装在 linux 里面现成的平台)、redis 开发平台。  SaaS(软件即服务):经营的是软件,比如公司的 OA 系统(部署到远程服务 器中的 OA 软件)  2  What is Docker Docker 就是一种 虚拟 容器 技术 。  通过 Docker 这种 虚拟 容器 技术 ,可以对物理机的资源进行更加合理有效 的利用,可以将一台物理机器 虚拟 出很多个拥有完整操作系统,并且相互 (1)什么是 虚拟 把硬件资源从物理方式转变为逻辑方式,打破原有物理结构,使用户可以灵活管理这些资源,并且允许1台物理机上同时运行多个操作系统,以实现资源利用率最大 和灵活管理的 技术 (2) 虚拟 层①X86平台指令集划分为4个特权模式:ring0-3②操作系统工作在ring0③应用程序使用ring3④驱动程序使用ring1-2(3) 虚拟 的优势①减少服务器数量,降低硬件采购成本②资源利用率最大 ③降低机房空间、散热、电耗成本④硬件资源可动态调整,提高企业IT业务灵活性⑤高可用性⑥在不中断服务的情况下进行物理硬件调整⑦降低管理成本⑧具备更高效的灾备能力(4)VMware 虚拟 ①vSphere是VMw 诞生背景一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验. Docker 之所以发展如此迅速,也是因为它对此给出了一个标准 的解决方案。环境配置如此麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样地复制过来。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。开发需要清楚的告诉运维部署团队,用的全部配置文件+所有软件环境。不过 官网:www. docker .com(与文档) Docker 的英文翻译是”搬运工“的意思,他搬运的东西就是我们常说的集装箱Container,Container 里面装的是任意类型的App,我们的开发人员可以通过 Docker 将App变成一种标准 的、可移植的、自管理的组件,我们可以在任何主流的操作系统中开发、调试和运行。 Docker 是一个开源的应用容器引擎,基于go语言,并遵从Apathe2.0协议开源。 Docker 可以让开发者打包他们的 目录一. Docker 概述1. Docker 概述2.容器的优点3. Docker 虚拟 机的区别4. Docker 核心 概念 二.安装 Docker 三. Docker 镜像操作1.搜索镜像2.获取镜像3.镜像下载加速4.查看镜像信息5.查看本地镜像6.获取镜像详细信息7.为本地镜像添加新标签8.删除镜像9.保存镜像到本地10.载入镜像11.上传镜像四. Docker 容器操作1.容器创建2.查看容器运行状态3.启动容器4.终止容器运行5.容器的进入6.容器的导出与导入7.删除容器 一. Docker 概述 1. Docker 虚拟 :是指通过 虚拟 技术 将一台计算机 虚拟 为多台逻辑计算机。 在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统, 并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率 传统 虚拟 : IAAS(基础设施级服务) ----PAAS(平台级服务) 2、 虚拟 后的结果 打破了操作系统和硬件的互相倚賴 通过封装到到 虚拟 机的 技术 , 管理操作系统和应用程序为单一的个体 強大的安全和故障隔离 虚拟 机是独立于硬件的 文章目录一、为什么要 虚拟 二、什么是 虚拟 三、 虚拟 技术 分类(1)全 虚拟 技术 (2)半 虚拟 技术 (3)寄居架构(4)裸金属架构四、 Docker 与传统 技术 对比五、 Docker 技术 六、 Docker 重要 概念 一、为什么要 虚拟 虚拟 前: 1、系统资源利用率低。经调查,服务器只有5%的资源得到利用。 2、每台主机一个操作系统,且在一个电脑上运行多个进程会遭遇冲突。 3、硬件成本高昂且不够灵活。 虚拟 后: 1、打破系统和硬件的相互依赖。 2、强大安全和故障的隔离。 3、通过封装到 虚拟 机,管理程序和应用程序为单一个 2.1 什么是 Docker Docker 是一个开源的应用容器引擎,它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到安装了任何 Linux 发行版本的机器上。 Docker 基于LXC来实现类似VM的功能,可以在更有限的硬件资源上提供给用户更多的计算资源。与同VM等 虚拟 的方式不同,LXC不属于全 虚拟 、部分 虚拟 或半 虚拟 中的任何一个分类,而是一个操作系统级 虚拟 Docker 是直接运行在宿主操作系统之上的一个容器,使用沙箱机制完全 虚拟 出一个完整的操作,容器之间不会有任何接口,从而让