1.什么是Docker?
Docker是基于go语言实现的开源项目,诞生于2013年初。最初发起者是DotCloud公司
开源项目地址:http://github.com/docker/docker
现在主流的Linux操作系统都已经支持Docker
Docker的主要目标是:Build, Ship and Run Any App, Anywhere.即通过对应用组件的封装(packaging)分发(Distribution)部署(Deployment)运行(Runtime)等生命周期的管理,达到应用组件级别的“一次封装,到处运行”。这里的应用组件可以是一个Web应用,也可以是一套数据库服务,甚至是一个操作系统或者编译器。
2.linux容器技术
Docker引擎的基础是Linux容器(Linux Containers,LXC)技术。
IBM DeveloperWorks给出了关于容器技术的准确描述:容器有效的将单个操作系统管理的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外也避免了准虚拟化和系统调用替换中的复杂性。
在LXC基础上,Docker进一步优化了容器的使用体验。Docker提供了各种容器管理工具(如分发,版本,移植等)让用户无需关注底层的操作,可以简单明了的管理和使用容器。用户操作Docker容器就像操作一个虚拟机那样简单。
我们简单的将Docker容器理解为一个沙盒(Sandbox).每个容器内运行一个应用,不同的容器相互隔离。容器之间也可建立通信机制。容器的创建和停止都十分迅速,容器自身对资源的需求也十分有限,远远低于虚拟机。很多时候可以直接把容器作为应用本身也没什么问题。
3.为什么要使用Docker
Docker在开发和运维中的优势
1.更快速的交付应用
开发人员可以使用镜像来快速构建一套标准的开发环境,开发完成后,测试和运维人员可以直接使用相同环境来部署代码。Docker可以快速创建和删除容器,实现快速迭代,大量节约开发 测试 和部署时间。并且各个步骤都有明确的配置和操作,整个过程全程可见,使团队更容易理解应用的创建和工作过程。
2.更高效的资源利用
Docker容器的运行不需要额外的虚拟化管理程序支持,它是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。
3.更轻松的迁移和扩展
Docker容器几乎可以再任意的平台上运行。包括物理机、虚拟机 公有云 私有云 个人电脑 服务器等。这种兼容性让用户在不同平台之间轻松迁移应用。
4.更简单的更新和管理
使用Dockerfile,只需要小心的配置修改,就可以替代以往大量的更新工作,并且所有更新都以增量的方式进行分发和更新,从而实现自动化并且高效的容器管理。