虚拟化技术
虚拟化技术是一个通用的概念,在计算机领域一般指的是计算虚拟化,或通常说的服务器虚拟化。虚拟化是一种资源管理技术,将计算机的各种实体资源比如:cpu、内存、网络、存储等进行抽象,转换呈现出来,来解决实体结构间不可切割的问题,使用户对资源重新组装来提高资源使用率。它的目标通常是为了在一台主机上运行多个系统或应用,从而提高系统资源利用率,降低成本,方便管理和容灾备份等。
虚拟化技术分类
虚拟化技术可以分为基于硬件的虚拟化和基于软件的虚拟化技术。基于硬件的虚拟化技术不多,基于软件的虚拟化技术又可分为应用虚拟化和平台虚拟化。应用虚拟化一般指模拟设备或wine软件。平台虚拟化可分为:
- 完全虚拟化:虚拟机模拟底层的完整是的硬件和指令。比如VMware这类虚拟机。
- 硬件辅助虚拟化:利用硬件辅助支持处理敏感指令来实现完全虚拟化的功能。比如VMware workstation。
- 部分虚拟化:只针对部分硬件进行虚拟化,客户操作系统需要进行修改。早期的虚拟化技术。
- 超级虚拟化:部分硬件操作接口以软件的形式提供给客户操作系统,客户操作系统需要进行修改。
- 操作系统级虚拟化:内核创建多个虚拟的操作系统实例,来隔离不同的进程。容器技术就是属于这个。
Docker与传统虚拟化的区别
传统虚拟化技术是在硬件资源级别的虚拟化,需要有虚拟机管理程序和虚拟机操作系统。而Docker直接建立在操作系统上虚拟化,直接复用本地操作系统,更加轻量级。
Docker是什么?
Docker是基于Go语言开发的开源项目,Build Ship and Run Any App,Anywhere是Docker的目标,也就是对应用封装、分发、部署、运行生命周期进行管理,使应用组件可以一次封装,到处运行。对于开发者而言,解决了“我的机器能够运行”的问题;对于运营商用Docker来管理应用,对应用进行隔离,来获得更好的计算密度;对于企业使用Docker能够建立敏捷的软件交付管道。可以看到Docker用途还是很广泛的。
核心概念
在了解Docker前,我们需要先知道几个概念。
- 镜像(image):镜像是一个轻量级、独立、可执行的包,它包含了运行一个软件所需要的一切,包括代码、运行环境、类库、环境变量、配置文件等。
- 容器(container):容器用来执行和隔离应用,容器中运行的应用(app)天然的运行在主机内核上,所以它比虚拟机具有更好的性能。容器可以本地访问,每一个运行的容器都是一个独立的进程,不需要更多的内存执行其它东西。
- Docker仓库:Docker仓库类似于代码仓库,是专门存放镜像的地方。他与注册服务器(Registry)不是同一个概念,注册服务器是存放仓库的位置,其上可能有多个仓库,每一个仓库存放某一类景象,而这类景象通过tag进行区分。比如ubuntu仓库、Centos仓库。
Docker仓库可分为公开仓库和私有仓库,目前最大的公开仓库是Docker hub,存放庞大的镜像供下载。用户也可以创建一个私有仓库,共内部使用,类似于git。
Docker安装
Docker支持Linux、MacOs、Windows、云环境的安装,可以参考:
https://docs.docker.com/engine/installation/ 进行相应的安装。
Docker版本
最近Docker版本发生重大变化,分为社区版(CE)和企业版(EE),版本也从1.13.x一跃到17.03。
之后,Docker 会每月发布一个 edge 版本(17.03, 17.04, 17.05...),每三个月发布一个 stable 版本(17.03, 17.06, 17.09...),企业版(EE) 和 stable 版本号保持一致,但每个版本提供一年维护。