Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,听从了 Apache 2.0 协议,项目代码在 GitHub 上 进行维护。Docker 自开源后受到普遍的关注和讨论,以致于 dotCloud 公司后来都更名为 Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中普遍应用。Docker 项目的目标是实现 轻量级的操做系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不须要去关心容器的管理,使得操做更为简便。用户操做 Docker 的容器就像操 做一个快速轻量级的虚拟机同样简单。Docker 可让开发者打包他们的应用以及依赖包到一个轻量级、可移植 的容器中,而后发布到任何流行的 Linux 机器上,也能够实现虚拟化。容器是彻底使用沙箱机制,相互之间不 会有任何接口(相似 iPhone 的 app),更重要的是容器性能开销极低。git
在云时代,开发者建立的应用必需要能很方便地在网络上传播,也就是说应用必须脱离底层物理硬件的限制; 同时必须知足“任什么时候间任何地点”可获取可以使用的特色。所以,开发者们须要一种新型的建立分布式应用程序 的方式,快速分发部署,而这正是 Docker 所可以提供的最大优点。Docker 提供了一种更为聪明的方式,经过 容器来打包应用、解耦应用和运行平台。这意味着迁移的时候,只须要在新的服务器上启动须要的容器就能够了, 不管新旧服务器是不是同一类别的平台。这无疑帮助咱们节约了大量的宝贵时间,并下降部署过程出现问题的风 险。docker
对于开发和运维人员来讲,最求之不得的效果可能就是一次建立和配置,以后能够在任意地方、任意时间让 应用正常运行,而 Docker 偏偏能够实现这一中级目标。具体来讲,在开发和运维过程当中,Docker 具备如下几 个方面的优点:
·······更快的交付和部署:使用 Docker,开发人员可使用镜像来快速构建一套标准的开发环境;开发完之 后,测试和运维人员能够直接使用彻底相同的环境来部署代码。只要是开发测试过的代码,就能够确保 在生产环境无缝运行。Docker 能够快速建立和删除容器,实现快速迭代,节约开发、测试及部署的时间
·······更高效的利用资源:运行 Docker 容器不须要额外的虚拟化管理程序的支持,Docker 是内核级的虚拟化,能够实现更高的性能,同时对资源的额外需求很低,与传统的虚拟机方式相比,Docker 的性能要 提升 1 ~ 2 个数量级。
·······更轻松的迁移和扩展:Docker 容器几乎能够在任意的平台上运行,包括物理机、虚拟机、公有云、私 有云、我的电脑等等,同时支持主流的操做系统发行版本。这种兼容性能让用户能够在不一样的平台之间 轻松的迁移应用。
·······更轻松的管理和更新:使用 Dockerfile,只须要小小的配置修改,就能够替代以往大量的更新工做。所 有的修改都以增量的方式被分发和更新,从而实现自动化而且高效的容器管理。ubuntu
做为一种轻量级的虚拟化方式,Docker 在运行应用上跟传统的虚拟机的方式相比具备以下显著优点:安全
1.Docker 容器启动很快,启动和中止能够实现秒级,相比传统的虚拟机方式(分钟级)要快速不少。 2.Docker 容器对系统资源需求不多,一台主机上能够同时运行数千个 Docker 容器。 3.Docker 经过相似 git 设计理念的操做来方便用户获取、分发和更新应用镜像,存储复用,增量更新。 3.Docker 经过 Dockerfile 支持灵活的自动化建立和部署机制,能够提升工做效率,并标准化流程。
特性 | 容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较好 |
内存 | MB级 | GB级 |
硬盘适应 | MB级 | GB级 |
运行密度 | 单台主机支持上千个 | 单台主机支持几个 |
隔离性 | 安全隔离 | 彻底隔离 |
迁移 | 优秀 | 通常 |
Docker 以及其余容器技术,都属于操做系统虚拟化范畴,操做系统细腻化最大的特色就是不须要额外的 supervisor 支持。Docker 虚拟化方式之因此有众多优点,跟操做系统虚拟化技术自身的设计和实现分不开
bash
Docker 中有三个核心概念:镜像、容器和仓库。所以,准确把握这三大概念对于掌握 Docker 技术尤其重 要。服务器