一、Docker简介
1.什么是容器?
容器技术是一种虚拟化方案,传统虚拟机是通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上。容器是直接运行在操作系统之上的内核空间,因此,容器虚拟化也被称为操作系统虚拟化。由于依赖于操作系统特性,容器只能运行与底层操作系统相同或相似的操作系统。Docker容器依赖于Linux内核特性:Namespace和Cgroups(Control Group)。Docker只能运行Linux系统。
2.容器的优点:
虚拟机需要包含应用和依赖的库及操作系统,容器只需要包含应用和依赖的库即可,磁盘占有空间小。虚拟机需要模拟硬件的行为,对内存和CPU损害较大,容器对内存和CPU损害较小。同样配置的服务器使用容器技术可以提供更多的服务,服务更多的用户。
虚拟机技术:
App A | App B |
Bins/Libs | Bins/Libs |
Guest OS | Guest OS |
Hypervisor | |
Host OS | |
Server |
容器技术:
App A | App B |
Bins/Libs | Bins/Libs |
Docker Engine | |
Host OS | |
Server |
3.容器技术为何没有被广泛应用?
容器本身依赖操作系统和其技术的复杂性,不易安装和管理,实现自动化,docker就是为了改变这一切而出现。
4.什么是Docker?
Docker是一个将应用程序自动部署到容器的开源引擎,由go语言编写。虚拟化容器执行环境中增加了一个应用程序部署引擎,为用户提供轻量快速的环境。运行开发者程序,方便高效的将程序从开发者环境部署到测试环境再到生产环境。
5.Docker的特点
(1)提供简单轻量的建模方式,只需要几分钟就可以把自己的程序docker化,大部分docker程序不到一秒就可以运行起来。去除了管理程序的开销,运行速度快。
(2)职责的逻辑分离,开发者只关心容器中运行的程序,运维人员只需要关心如何管理容器。加强开发人员写代码的开发环境与应用要部署生产环境的一致性。
(3)快速高效的开发生命周期,让开发的程序可一致性,避免额外调试部署的开销。
鼓励使用面向服务的架构,单个容器只运行一个应用程序或进程,这样形成分布式应用程序模型。应用程序内部互联,高内聚低耦合,单一任务,便于定位问题所在。
6.Docker的使用场景
(1)使用Docker容器开发、测试、部署服务。
(2)创建隔离的运行环境,同一服务的不同版本服务不同用户,docker容易创建不同的版本开发测试。
(3)搭建测试环境
(4)构建多用户的平台即服务(PaaS)基础设施。
(5)提供软件即服务(SaaS)应用程序。
(6)高性能、超大规模的宿主机部署。目前AWS等公有云平台提供对docker的支持,docker在云计算领域有非常广阔的前景。