一、虚拟化概述
1.1引⼊虚拟化技术的必要性
服务器只有5%的时间是在⼯作的;在其它时间服务器都处于“休眠”状态.
虚拟化前
- 每台主机⼀个操作系统;
- 软硬件紧密结合;
- 在同⼀个主机上运⾏多个应⽤程序通常会遭遇冲突;
- 系统的资源利⽤率低;
- 硬件成本⾼昂⽽且不够灵活.
虚拟化后
- 打破了操作系统和硬件的相互依赖;
- 通过封装到虚拟机的技术,管理操作系统和应⽤程序为单⼀的个体;
- 强⼤的安全和故障隔离;
- 虚拟机是独⽴于硬件的,它们能在任何硬件上运⾏.
1.2 虚拟化定义
虚拟化,是通过虚拟化技术将⼀台计算机虚拟为多台逻辑计算机。
在⼀台计算机上同时运⾏多个逻辑计算机,每个逻辑计算机可运⾏不同的操作系统,⽽且应⽤程序都可以在相互独⽴的空间内运⾏⽽互不影响,从⽽显著提⾼计算机的⼯作效率。
1.3虚拟化技术的分类
- 全虚拟化技术
- 半虚拟化技术/准虚拟化技术
全虚拟化技术
完全虚拟化技术⼜叫硬件辅助虚拟化技术,最初使⽤的虚拟化技术就是全虚拟化(Full Virtualization)技术,它在虚拟机(VM)和硬件之间⼜加了⼀个软件层——Hypervisor,或者叫虚拟化监控器(VMM).
- Hypervisor直接运⾏在物理硬件之上——KVM;
- Hypervisor运⾏在另⼀个操作系统中——QEMU和Wine.
半虚拟化技术
它就是在全虚拟化的基础上,把客户操作系统进⾏了修改,增加了⼀个专⻔的API.
这个API可以将客户操作系统发出的指令进⾏最优化,即不需要Hypervisor耗费⼀定的资源进⾏翻译操作,因此Hypervisor的⼯作负担变得⾮常的⼩,整体性能也有很⼤的提升.
寄居架构
就是在操作系统之上安装和运⾏虚拟化技术,依赖于主机操作系统对设备的⽀持和物理资源的管理;
裸⾦属架构
就是直接在硬件上⾯安装虚拟化软件,再在其上安装操作系统和应⽤,依赖虚拟层内核和服务器控制台进⾏管理.
寄居架构
裸⾦属架构
二、docker概述
2.1什么是容器
容器是一种虚拟化技术,它可以在操作系统层面上把应用程序及其依赖项打包在一起。这个打包形成的包被称作容器镜像,它可以被快速地部署到不同的计算机上。容器镜像包含了应用程序,运行环境和系统库,使得应用程序的依赖项可以被完全隔离。这种隔离可以保证容器内的应用程序在不同的计算机上都能够运行。容器技术具有轻量、快速、可移植等特点,使得应用程序能够在不同的环境中快速、可靠地部署和运行。
2.2什么是docker
Docker是dotcloud公司开源的⼀款产品,dotcloud是2010年成⽴的⼀家公司,主要基于PaaS(Platform as a Service)平台为开发者提供服务.
- Linux Container(LXC)是⼀种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源;
- Docker是PaaS提供商dotcloud开源的基于LXC的⾼级容器引擎,源代码托管在GitHub上,基于Golang语⾔并遵从Apache 2.0协议开源;
- Docker设想是交付运⾏环境如同海运,OS如同⼀个货轮,每⼀个在OS基础上的软件都如同⼀个集装箱,⽤户可以通过标准化⼿段⾃由组装运⾏环境,同时集装箱的内容可以由⽤户⾃定义,也可以由专业⼈员制造.
2.3Docker与传统虚拟机对比
Docker与传统虚拟机的主要区别可以从以下几个方面进行对比:
- 启动速度:启动虚拟机需要先启动虚拟机的操作系统,再启动应用,这个过程可能会非常慢;而启动Docker相当于启动宿主操作系统上的一个进程,因此启动速度会更快。
- 占用资源:虚拟机是一个完整的操作系统,需要占用大量的磁盘、内存和CPU资源;相比之下,Docker容器只是一个进程,所需的资源更少,一般在1-5%之间,而虚拟机可能需要5%-15%的资源。
- 高可用策略:在高可用策略上,Docker容器的资源是弹性伸缩的,可以实现负载均衡;而虚拟机则是通过备份、异地容灾和迁移来实现资源高可用。
- 实现原理:Docker与虚拟机的实现原理有所不同。虚拟机是通过模拟硬件来创建一个完整操作系统的副本,而Docker则是利用Linux内核的一些特性,如Cgroups和Namespace,来实现资源的隔离和管理。
- 总结:虽然Docker容器和虚拟机都是为了实现应用程序的隔离和部署,但它们在实现方式、资源消耗、启动速度等方面有很大的不同。选择使用哪种技术取决于具体的应用场景和需求。
2.4Docker的构成
Docker仓库: https://hub.docker.com
2.Docker⾃身组件:
- Docker Client: Docker的客户端
- Docker Server: Docker daemon的主要组成部分,接受⽤户通过Docker Client发送的请求,并按照相应的路由规则实现路由分发
- Docker镜像: Docker镜像运⾏之后,⽣成容器(docker run)
阿⾥镜像仓库:
https://cr.console.aliyun.com/cn-hangzhou/instances/images
腾讯镜像仓库:
https://console.cloud.tencent.com/tke2/registry/qcloud/default?rid=1
华为镜像仓库:
https://mirrors.huaweicloud.com
2.5Docker化应用
早期
优化
镜像方式