英语原文共 222 页,剩余内容已隐藏,支付完成后下载完整资料
文献翻译:
Docker:启动与运行
第一章
Docker介绍
Docker的诞生
当Docker第一次被公之于众的时候dotCloud的CEO兼创始人Solomon Hykes没有发布或者夸耀它,而是在2013年3月15号的加利福尼亚的圣克拉拉市举行了一场关于Python开发者的简短会议,在这次的发布中,大约只有40个dotCloud之外的人有幸能接触到Docker。
在这次发布会之后的几周,它的点击量以惊人的速度增长,同时这个项目马上被开源并且公布到了GitHub上,这样一来任何人都可以将这个项目下载下来并且能够为这个项目出自己一份力,又过了大概几个月后,有更多的工作者开始了解Docker正在以怎样的方式改变着软件的开发,移植以及运行。短短的一年里,几乎在这个圈子里没有人不知道Docker,但大多数都迷茫Docker到底是什么,为什么人们谈到它都很激动。
Docker能够很方便的封装创建任何应用程序分配工件的过程,在任何环境下按一定的规模进行部署,精简工作流程并且使软件组织灵活易于反应。
Docker的使命
尽管Docker表面上看起来像是虚拟化的平台,但实际上却不止这些。Docker的领域涵盖了产业上一些拥挤的部分,其中涵盖的技术例如、KVM、Xen、OpenStack、Mesos、Capistrano、Fabric、Ansible、Chef、Puppet、Saltstack,等等,这些便是Docker所要竞争的对象,而且你可能已经发现了它,就比方说,大多数工程师不会说虚拟化产品不会影响到配置管理工具,而现在包括科技也被Docker影响了。上面提到的那些技术也普遍被称赞到有实力提高产量,而这也就是为什么会导致许多有趣的东西。Docker在一些过去十年中的最有用的技术间找到了自己的位置。
如果你打算将Docker与这些领域中的一流的产品进行细致的比较的话,Docker可能像一个普通的挑战者。它在某些领域要强于其他,但是Docker带来的是穿过一个广泛的工作流式的挑战,通过轻量的软件部署工具Capistrano、Fabric,同时利用轻量级的管理虚拟系统,并且提供一个钩子使得工作流程变得自动化同时轻松易于实现,Docker就是提供了这个非常有利的特点。
许多新技术总是变化不定,对这些较新的东西还总保持着一些怀疑的态度。如果不深深的挖掘,同时开发者或者运营团队有别的技术恰好能解决这个特别的问题的时候,那么往往就会很容易的错过Docker。如果你仅仅只是把Docker看做是一个虚拟化的东西或者是配置技术的话,那他可能看起来并不十分吸引人。但Docker总是比它表面上看到的要好得多。
通常在团队中进行交流并正确的得到处理往往是困难并且是昂贵的,甚至只是在一个小组织中。目前我们生活在一个十分需要团队交流的世界,以此来获得详尽的信息共享并成功。那么有个工具便可以减少这种交流的复杂性,当在生产复杂的软件将会很成功。这也就是为什么Docker值得更深层次的挖掘。Docker并不是万能的,并且使Docker生效需要一些思考,但是Docker在解决一些真正的世界组织问题并且帮助那些公司使优秀的软件更快速的上市是一个不错的选择。实现一个精心设计的Docker工作流程可以使研发团队更加快乐,同时可以让企业真正的收益。
所以哪里才是企业感到最痛苦的呢?以期望的速度来发布软件的今天很难做的很好,就像企业从拥有一个开发团队到很多个开发团队,在发行新东西的交流过程中的负担会变得更加难以控制。开发者们不得不将错综复杂的软件发布环境考虑进来,同时开发团队还要多的了解他们所发行软件的内部,这些通常是比较好的工作技巧,因为它能使得你以更好的方式去理解整个环境并且能够促进到坚固软件的设计,但是这些相似的技巧却很难作为一个企业成长速度的衡量标准。
每个团队的环境细节通常需要大量的沟通了解,而不是直接参与其中创造价值。就像需要开发者要求运营团队减慢发行特征库的1.2.1个版本同时不会直接对公司造成价值。如果开发者只仅仅更新他们在使用的版本库,写他们自己的代码,测试新的版本并且发行它,那么开发周期会很显著的缩短。如果运营团队能够将软件更新到主服务器上而不是把许多开发团队人员协调起来,那么会更有效率。Docker在软件中建立了一种隔离层使得世界上人们的交流负担得以减轻。
除了解决交流方面的问题,对于软件结构构建健壮的应用程序的方式Docker有着自己的看法,他就像是围绕着原子的建筑哲学中心或者一次性的容器。在部署期间,全部以前版本软件的运行时环境都会被丢弃。没有一种应用环境会比应用程序生存的更长,而这只是巨大影响中的一小部分。这就意味着应用程序不会偶然的依靠剩余的产品而提前发行。也意味着短暂的调试改动从本地文件系统中取出不太可能会在未来的发行中出现,同时也意味着应用程序在服务器之间会变得十分的便捷,因为所有的情况都被直接的考虑进了产品部署中并且不会在改变,或者给出一个外部的依赖环境,就像数据库,缓存,或者文件服务器。
这使得应用程序不仅仅能够更容易的扩缩,同时更加的可靠,应用程序容器的实例可以在网站前端运行期间来回交流并不会造成太大的影响。这些对于没有Docker的应用来说都是一个不错的结构方式。但是设计选择包含在Docker自己的设计中意味着Docker化得应用程序将也会进行较好的测试如果是被需要的话。
Docker工作流程的好处
将Docker所来的事情进行分类归纳的话是很难得一件事。当它实现的不错的时候,它会让运营团队,开发者,运营工程师以大量的方式收益。这使得对结构的把握变得简单,因为在外部透过主机系统来看的话所有的应用在本质上都是一样的,这使得加工非常的方便地在应用程序间分享和写入。在这个世界上利益与风险总是并存的,但Docker特别的曲向与利益,下面有些东西是你会从Docker得到的:
以开发者已经掌握的优秀技巧来打包软件。
许多企业不得不设立发行和制造工程师的岗位,这是为了方便在创造软件包的时候将所有的知识和加工应用在他们所支持的平台上且易于管理。 rpm、mock、dpkg、pbuilder这类工具非常的难以使用,而且每一个都需要单独的进行学习。而Docker则是将你所需的东西集成到一个包中然后被定义成一个单个的文件。
创建应用软件和必要的操作文件系统一起以一种标准的镜像格式。
在过去,你不单单需要你应用程序的包,而且要需要许多它所依赖的定义,就像Libraries还有Daemons。然而,你并不能百分之百的确定运行时环境都是相同的,所有的这些使得包非常的难以精通,而且对企业可靠的完成项目也会造成影响。通常有人在运行Scientfic Linux的时候想要尝试部署一个集群包并在Red Hat Linux上进行测试的时候,都希望这个包能够最大限度的接近他们所想要的情况。而通过Docker你只需要单个的文件来部署运行你自己的应用程序。Docker的层级镜像使得你的应用程序运行在期望的环境下变得非常的有效。
用包组件进行测试并且可以非常相近的移植到其他的系统环境下。
当开发者托付改变到版本控制系统的时候,一个新的Docker将会被创建,它可以通过完整的测试流程,并且在不需要任何重新编译或者打包的情况下来被部署生产。
从硬件中抽象出软件应用而不需要开销额外的资源
传统企业级虚拟化解决方案对于VMware来说,当人们需要在物理硬件和软件程序之间作为消耗资源来创建一个虚拟层并运行它的时候,VMware总是能被首先想到。虚拟机管理程序用来管理虚拟机并且使每个虚拟机运行的内核是基于硬件资源的一部分,而这些资源则不能再被主机应用所使用。另一方面容器则是直接联系到Linux内核的进程,因此可以利用更多的资源,知道系统或者配额达到上限。
当Docker第一次被发行的时候,Linux容器已经存在了几年,并且许多技术的基础并不是全新的技术。然而,Docker独特的将大型结构与工作流程选择结合为一个整体使得它比简单地把每个部分相加起来要强大得多。Docker最终成为了Linux的容器,而这个容器已经出现不止十年,接近平均的技术者。在某种程度上容器十分容易的契合与工作流程与企业的进度。同时上面所提到的这些问题会被很多对Docker项目感兴趣的人进行探索,使得进度变得比任何人期望的还要快。
在第一年的时候,新来这个项目的人会很吃惊地发现Docker并没有被制作完成,但是来自Docker开源社区对其稳固发展趋势的承诺使得这个项目迈出了非常轻快的一步。随着时间的流逝这一步也仅仅是略有起色的一步。Docker现在在1.x的发行版本中表现的很好,稳定性也不错,产品适应性也有,同时许多企业在应用发布过程中遇到许多严重复杂的问题时把Docker看成是一种解决方案。
Docker不能做什么
Docker可以广泛的用来解决一些看起来本该由其他相关的传统工具来解决的问题;然而Docker广泛的特点也就意味着在某些特别的功能上缺乏一些深度。就像许多企业发现当他们移植到Docker的时候他们可以完全移除掉自己的配置管理工具,但是Docker真正关注的是尽管能代替一些传统的工具,但通常上能够兼容它们或者与他们合并并扩展功能,同时。下面列出了一些我们所发现的工具类,这些工具Docker并不能直接代替它,相反通常能够通过结合能获得理想的结果。
企业级虚拟化平台(VMware,KVM,等等)
在传统的观念来看容器并不是虚拟机。虚拟机包含一个运行于主机系统之上的一个完整的操作系统,它最大的好处是可以在单个主机上运行许多不同类型的虚拟机。对于容器,不单是主机还有容器共享同样的内核,这意味着容器利用更少的系统资源,但必须建立在相同的底层操作系统之上(也就是Linux)。
云平台(Openstack,CloudStack,等等)
对于企业级虚拟化,容器工作流体现出了与云平台很多表面上相似的地方。他们都被传统地影响允许应用程序能够横向的规范起来以应对要求的变化。然而Docker并不是云平台。它仅仅在已存的Docker主机上控制着部署,运行和管理容器。它并不允许你创建一个新的主机系统,项目存储,块存储和其他许多与云平台有联系的典型资源。
配置管理(Puppet,Chef,等等)
尽管Docker可以显著的提高一个组织在管理应用程序和他们附属依赖的能力,他并不是直接的替换传统的配置管理。Docker日志通常可以用来规定一个容器应该怎样来看建立时间,但它却不管理容器的运行状态,也不会被用来管理Docker的主机系统。
部署框架(Capostrano,Fabric,等等)
Docker通过创造一个完备的容器镜像来减少部署的许多方面,而这个完备的容器镜像将所有的依赖封装到一个应用,并且可以被部署在任何环境下,而不去考虑改动。然而,Docker不能够被用来自动的完成复杂的部署过程。其他的工具普遍还需要串在一起形成一个自动的工作流程。
工作负荷管理工具(Mesos,Fleet,等等)
Docker没有内部的集群概念,额外的业务流程工具(包括Docker自己的Swarm工具)必须被用来智能地协调工作在Docker主机池中,并且记录每一个主机当前的状态和它们的资源,并且保留一份正在运行的容器目录。
部署环境(Vagrant,等等)
Vagrant是一个虚拟机管理工具来通常被开发者用来模拟服务栈,使得更类似于应用程序被部署的产品环境。对于其他的事情,Vagrant使得在Mac OS X 或者Windows为基础的工作模式下运行Linux的软件。自从Docker服务仅仅运行在Linux上,Docker提供的boot2dokcer和Docker Machine可以让开发者快速的在各种各样的平台上运行基于Linux的Docker。同时他们对于不同标准的工作流程也变得有意义,但是他们在Vagrant中不提供宽泛的特征建立。
在你脑边总是围绕着Docker当你想出它在没有任何一个强壮的框架作为参考时会是一种挑战。在下一章我们会广阔的了解Docker,它是什么,它打算怎样被使用,它有什么好处,这些问题在实现它的时候会一一的出现。
第二章
Docker一览
在你开始着手配置和安装Docker之前,小调查是为了搞清楚Docker是什么,它能为我们带来什么。它是非常强大的一个技术,但却不是非常复杂的,在这一章,我们将要涉及Docker是怎样工作的,它为什么这么强大,和你使用它的原因。如果你正在读这些,那可能你有自己的理由来使用Docker,在你着手之前它不会对你的理解造成不好的影响。
不必担心,这不会使你投入大量的精力,在下一章我们将会着手Docker的安装,并让它运行在你的操作系统上。
简单化过程
Docker可以简化工作流程和通信,并且通常从部署开始说起。传统意义上将,应用生产的周期通常看起来向下面描述的一样(在表2-1有说明)
- 应用开发者需要从运营工程师那里获得资源。
- 资源被准备好并发给开发者。
- 开发脚本并且部署工具。
- 运营工程师和开发者不停的对部署做细微的调整。
- 附加的应用依赖被开发者找到。 <li
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[148682],资料为PDF文档或Word文档,PDF文档可免费转换为Word
</li
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。