初识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与虚拟机比较

image

Docker容器技术与传统虚拟机技术的比较:

特性 容器 虚拟机
启动速度 秒级 分钟级
性能 接近原生 较弱
内存代价 很少 较多
磁盘使用 一般为MB 一般为GB
运行密度 单机支持上千个容器 一般几十个
隔离性 安全隔离 完全隔离
迁移性 优秀 一般

Docker与虚拟化

在计算机领域,虚拟化一般指的是计算虚拟化(computing virtualization),或者说是服务虚拟化。

“在计算机技术中,虚拟化是一种资源管理技术,是将计算机的各种实体资源(如服务器、网络、内存及存储等),予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以用比原本的组态更好的方式来应用这些资源。”——维基百科

虚拟化的核心是对资源的抽象,目标是为了在同一个主机上同时运行多个系统或应用,从而提高系统资源的利用率,并且降低成本、方便管理和容错容灾等。

  • 基于硬件的虚拟化
  • 基于软件的虚拟化
    • 应用虚拟化
    • 平台虚拟化(完全虚拟化、硬件辅助虚拟化、部分虚拟化、超虚拟化、操作系统级虚拟化)

Docker与常见虚拟机方式的不同之处:

image

核心概念与安装配置

为了顺利地理解Docker容器的整个生命周期,介绍Docker的三大核心概念:

  • 镜像(image)
  • 容器(Container)
  • 仓库(Repository)

核心概念

1.Docker镜像

Docker镜像类似于虚拟机镜像,可以理解为一个只读的模板。通过版本管理和增量的文件系统,我们可以直接使用已经做好的应用镜像。

2.Docker容器

Docker类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。

容器是从镜像创建的应用运行实例。容器之间相互隔离、互不可见。

镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。

3.Docker仓库

Docker仓库类似于代码仓库(借鉴git的思想),是Docker集中存放镜像文件的场所。

仓库注册服务器(Registry)是存放仓库的地方,其上存放着多个仓库。

每个仓库集中存放某一类镜像,通过不同的标签(tag)进行区分。

image

安装Docker引擎

Docker引擎是使用Docker容器的核心组件,可以在主流的操作系统和云平台上使用。

docker支持Docker引擎、Docker Hub、Docker Cloud等多种服务

  • Docker引擎,支持在桌面系统或云平台安装Docker,以及为企业提供简单安全弹性的容器集群编排和管理
  • Docker Hub,官方的云托管平台,提供公有和私有的镜像仓库
  • Docker Cloud,官方的容器云服务,可以完成容器的部署与管理,可以完整地支持容器化项目。

Docker包含社区版本(Community Edition, CE)和企业版本(Enterprise Edition, EE)。

各种环境下安装Docker