什么是虚拟化
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。
在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件 对资源充分利用。
虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等。
什么是docker
docker是一个开源项目,使用go语言实现。
docker项目的目标是实现轻量化的操作系统虚拟化解决方案。docker的基础是linux容器(LXC)等技术。在LXC的基础上进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作docker的容易就像操作一个快速轻量级的虚拟机一样简单。
容器与虚拟机比较
下面的图片比较了docker和传统虚拟化方式的不同。容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。
vm与docker框架,直观上来讲vm多了一层guest OS,同时Hypervisor会对硬件资源进行虚拟化,docker直接使用硬件资源,所以资源利用率相对docker低也是比较容易理解的。
其次,openstack能够以10台/min的速度创建虚拟机,在docker面前就弱爆了,因为docker是利用宿主机的系统内核,所以可以做到在几秒钟之内创建大量容器,它们的启动速度是在数量级上的差距。
docker只是在应用级上的虚拟化,所以只能安装linux系统。
(windows要运行docker,也需要将其放在一个linux虚拟机中才能与运行)
docker组件
docker服务器与客户端
docker是一个 客户端-服务器(C/S)架构程序。
docker客户端只需要向docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。
docker提供了一个命令行工具docker以及一整套RESTful API。你可以在同一台宿主机上运行docker的守护进程和苦湖段,也可以从本地的docker客户端连接到运行在另外一台宿主机上的远程docker守护进程。
docker镜像与容器
镜像是构建docker的基石。通过镜像来构建多个容器。镜像就好比类,容器就是通过镜像这个类生成的实例。
Registry(注册中心)
docker用registry来保存用户构建的镜像。registry分为公共和私有两种。docker公司运营公共的registry叫做 Docker Hub。用户可以在Docker Hub注册账号,分享并保存自己的镜像。