Docker特色
1)上手快web
用户只须要几分钟,就能够把本身的程序“Docker 化”。Docker 依赖于“写时复制” (copy-on-write)模型,使修改应用程序也很是迅速,能够说达到“随心所致,代码即改” 的境界。数据库
随后,就能够建立容器来运行应用程序了。大多数 Docker 容器只须要不到 1 秒中便可 启动。因为去除了管理程序的开销,Docker 容器拥有很高的性能,同时同一台宿主机中也 能够运行更多的容器,使用户尽量的充分利用系统资源。服务器
2)职责的逻辑分类架构
使用 Docker,开发人员只须要关心容器中运行的应用程序,而运维人员只须要关心如 何管理容器。Docker 设计的目的就是要增强开发人员写代码的开发环境与应用程序要部署 的生产环境一致性。从而下降那种“开发时一切正常,确定是运维的问题(测试环境都是正常的,上线后出了问题就归结为确定是运维的问题)”运维
3)快速高效的开发生命周期分布式
Docker 的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应用 程序具有可移植性,易于构建,并易于协做。(通俗一点说,Docker 就像一个盒子,里面 能够装不少物件,若是须要这些物件的能够直接将该大盒子拿走,而不须要从该盒子中一件件的取。)微服务
4)鼓励使用面向服务的架构工具
Docker 还鼓励面向服务的体系结构和微服务架构。Docker 推荐单个容器只运行一个应 用程序或进程,这样就造成了一个分布式的应用程序模型,在这种模型下,应用程序或者服 务均可以表示为一系列内部互联的容器,从而使分布式部署应用程序,扩展或调试应用程序 都变得很是简单,同时也提升了程序的内省性。(固然,能够在一个容器中运行多个应用程序)性能
Docker组件
1)Docker 客户端和服务器
Docker 是一个客户端-服务器(C/S)架构程序。Docker 客户端只须要向 Docker 服务器 或者守护进程发出请求,服务器或者守护进程将完成全部工做并返回结果。Docker 提供了 一个命令行工具 Docker 以及一整套 RESTful API。你能够在同一台宿主机上运行 Docker 守护 进程和客户端,也能够从本地的 Docker 客户端链接到运行在另外一台宿主机上的远程 Docker 守护进程。
2)Docker镜像
镜像是构建 Docker 的基石。用户基于镜像来运行本身的容器。镜像也是 Docker 生命周 期中的“构建”部分。镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构 建出来。例如:测试
添加一个文件;
执行一个命令;
打开一个窗口。
也能够将镜像看成容器的“源代码”。镜像体积很小,很是“便携”,易于分享、存储和更 新。
3)Registry(注册中心)
Docker 用 Registry 来保存用户构建的镜像。Registry 分为公共和私有两种。Docker 公司 运营公共的 Registry 叫作 Docker Hub。用户能够在 Docker Hub 注册帐号,分享并保存本身的 镜像(说明:在 Docker Hub 下载镜像巨慢,能够本身构建私有的 Registry)。
4)Docker容器
Docker 能够帮助你构建和部署容器,你只须要把本身的应用程序或者服务打包放进容 器便可。容器是基于镜像启动起来的,容器中能够运行一个或多个进程。咱们能够认为,镜 像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。 容器基于 镜像启动,一旦容器启动完成后,咱们就能够登陆到容器中安装本身须要的软件或者服务。
因此 Docker 容器就是: 一个镜像格式; 一些列标准操做; 一个执行环境。
Docker 借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker 将这个模 型运用到本身的设计中,惟一不一样的是:集装箱运输货物,而 Docker 运输软件。
和集装箱同样,Docker 在执行上述操做时,并不关心容器中到底装了什么,它不论是 web 服务器,仍是数据库,或者是应用程序服务器什么的。全部的容器都按照相同的方式将 内容“装载”进去。
Docker 也不关心你要把容器运到何方:咱们能够在本身的笔记本中构建容器,上传到 Registry,而后下载到一个物理的或者虚拟的服务器来测试,在把容器部署到具体的主机中。 像标准集装箱同样,Docker 容器方便替换,能够叠加,易于分发,而且尽可能通用。
使用 Docker,咱们能够快速的构建一个应用程序服务器、一个消息总线、一套实用工 具、一个持续集成(CI)测试环境或者任意一种应用程序、服务或工具。咱们能够在本地构 建一个完整的测试环境,也能够为生产或开发快速复制一套复杂的应用程序栈。
使用Docker作什么
容器提供了隔离性,结论是,容器能够为各类测试提供很好的沙盒环境。而且,容器本
身就具备“标准性”的特征,很是适合为服务建立构建块。Docker 的一些应用场景以下:
加速本地开发和构建流程,使其更加高效、更加轻量化。本地开发人员能够构建、 运行并分享 Docker 容器。容器能够在开发环境中构建,而后轻松的提交到测试环境中,并 最终进入生产环境。可以让独立的服务或应用程序在不一样的环境中,获得相同的运行结果。这一点在 面向服务的架构和重度依赖微型服务的部署由其实用。用 Docker 建立隔离的环境来进行测试。例如,用 Jenkins CI 这样的持续集成工具 启动一个用于测试的容器。Docker 可让开发者先在本机上构建一个复杂的程序或架构来进行测试,而不是 一开始就在生产环境部署、测试。