1. 什么是Docker
1.1 Docker开源项目背景
Docker是基于Go语言实现的开源容器项目。它诞生于2013年年初,最初发起者是dotCloud公司。
dotCloud公司也随之快速发展壮大,在2013年年底直接改名为Docker Inc,并专注于Docker相关技术和产品的开发,目前已经成为全球最大的Docker容器服务提供商。官方网站为docker.com。
1.2 Linux容器技术——巨人的肩膀
Linux容器(LinuxContainers, LXC)技术,基于一系列新引入的内核特性,实现了更具扩展性的虚拟化容器方案。更加关键的是,LXC终于被集成到到主流Linux内核中,进而成为Linux系统轻量级容器技术的事实标准。
1.3 从Linux容器到Docker
早期的Docker代码实现是直接基于LXC的。自0.9版本开始,Docker开发了libcon-tainer项目作为更广泛的容器驱动实现,从而替换掉了LXC的实现。
简单地讲,读者可以将Docker容器理解为一种轻量级的沙盒(sandbox)。每个容器内运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络互相通信。
2. 为什么要使用Docker
2.1 Docker容器虚拟化的好处
- 应用可以脱离底层物理硬件的限制
- 可以随时随地获取应用
2.2 Docker在开发和运维中的优势
- 更快速的交付和部署
- 更高效的资源利用
- 更高效的资源利用
- 更简单的更新管理
2.3 Docker与虚拟机比较
3. Docker与虚拟化
虚拟化的分类:
- 完全虚拟化 : 虚拟机模拟完整的底层硬件环境和特权指令的执行过程,客户操作系统无须进行修改。
- 硬件辅助虚拟化 : 利用硬件(主要是CPU)辅助支持处理敏感指令来实现完全虚拟化的功能,客户操作系统无须修改。
- 部分虚拟化 : 只针对部分硬件资源进行虚拟化,客户操作系统需要进行修改。现在有些虚拟化技术的早期版本仅支持部分虚拟化。
- 操作系统级虚拟化 : 内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程。容器相关技术即在这个范畴。