初识Docker和容器(第一、二章)
- 关键词:“Build, Ship and Run Any App, Anywhere”
什么是Docker
虚拟化,既可以通过硬件模拟来实现,也可以通过操作系统软件来实现。
容器技术更为优雅,它充分利用了操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化。
“新一代的虚拟化技术”。
将基于容器打造的云平台成为“容器云”。
Docker的构想
Docker的构想是要实现“Build, Ship and Run Any App, Anywhere”,即通过对应用的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)生命周期进行管理,达到应用组件级别的“一次封装,到处运行”。
关于这里说的应用组件,既可以是一个Web应用、一个编译环境,也可以是一套数据库平台服务、一个操作系统或者集群。
Docker首次为应用的开发、运行和部署提供了“一站式”的实用解决方案
Linux容器技术(Linux Containers, LXC)
“容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化和系统调用替换中的复杂性。”
从Linux容器到Docker
在LXC的基础上,进一步优化了容器的使用体验。
- 1.Docker提供了各种容器管理工具(分发、版本、移植等),用户无需关注底层的操作,更加简明地管理和使用容器。
- 2.Docker通过引入分层文件系统构建和高效的镜像机制,降低了迁移难度,极大地改善了用户体验。
简单来说,我们可以将Docker理解为一种轻量级的沙盒(sandbox)。每个容器内运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络互相通信。容器的创建和停止十分快速,几乎跟创建和终止原生应用一致;另外,容器自身对系统资源的额外需求也十分有限,远远低于传统虚拟机。
为什么使用Docker
Docker容器虚拟化的好处
云时代,开发者创建应用必须要能很方便地在网络上传播,也就是说:
- 必须脱离底层物理硬件的限制
- 必须是“任何时间任何地点”可获取的
- 开发者需要一种新型的创建分布式应用程序的方式,快速发布和部署
Docker提供了一种更为聪明的方式,通过容器来打包应用、解耦应用和运行平台(便于迁移)。
Docker在开发和运维中的优势
Docker是一次创建或配置,之后可以在任意地方、任意时间让应用正常运行。Docker的优势:
- 更快速的交付和部署
- 更高效的资源利用
- 更轻松的迁移和扩展
- 更简单的更新管理
Docker与虚拟机比较
Docker容器技术与传统虚拟机技术的比较:
特性 | 容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较弱 |
内存代价 | 很少 | 较多 |
磁盘使用 | 一般为MB | 一般为GB |
运行密度 | 单机支持上千个容器 | 一般几十个 |
隔离性 | 安全隔离 | 完全隔离 |
迁移性 | 优秀 | 一般 |
Docker与虚拟化
在计算机领域,虚拟化一般指的是计算虚拟化(computing virtualization),或者说是服务虚拟化。
“在计算机技术中,虚拟化是一种资源管理技术,是将计算机的各种实体资源(如服务器、网络、内存及存储等),予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以用比原本的组态更好的方式来应用这些资源。”——维基百科
虚拟化的核心是对资源的抽象,目标是为了在同一个主机上同时运行多个系统或应用,从而提高系统资源的利用率,并且降低成本、方便管理和容错容灾等。
- 基于硬件的虚拟化
- 基于软件的虚拟化
- 应用虚拟化
- 平台虚拟化(完全虚拟化、硬件辅助虚拟化、部分虚拟化、超虚拟化、操作系统级虚拟化)
Docker与常见虚拟机方式的不同之处:
核心概念与安装配置
为了顺利地理解Docker容器的整个生命周期,介绍Docker的三大核心概念:
- 镜像(image)
- 容器(Container)
- 仓库(Repository)
核心概念
1.Docker镜像
Docker镜像类似于虚拟机镜像,可以理解为一个只读的模板。通过版本管理和增量的文件系统,我们可以直接使用已经做好的应用镜像。
2.Docker容器
Docker类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。
容器是从镜像创建的应用运行实例。容器之间相互隔离、互不可见。
镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。
3.Docker仓库
Docker仓库类似于代码仓库(借鉴git的思想),是Docker集中存放镜像文件的场所。
仓库注册服务器(Registry)是存放仓库的地方,其上存放着多个仓库。
每个仓库集中存放某一类镜像,通过不同的标签(tag)进行区分。
安装Docker引擎
Docker引擎是使用Docker容器的核心组件,可以在主流的操作系统和云平台上使用。
docker支持Docker引擎、Docker Hub、Docker Cloud等多种服务
- Docker引擎,支持在桌面系统或云平台安装Docker,以及为企业提供简单安全弹性的容器集群编排和管理
- Docker Hub,官方的云托管平台,提供公有和私有的镜像仓库
- Docker Cloud,官方的容器云服务,可以完成容器的部署与管理,可以完整地支持容器化项目。
Docker包含社区版本(Community Edition, CE)和企业版本(Enterprise Edition, EE)。