欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

Docker到底是什么?Docker为什么它这么火!

程序员文章站 2022-06-18 23:50:44
xcode 是运行在操作系统mac os x上的集成开发工具(ide),由苹果公司开发。xcode是开发os x 和 ios 应用程序的最快捷的方式。xcode 具有统一的...

xcode 是运行在操作系统mac os x上的集成开发工具(ide),由苹果公司开发。xcode是开发os x 和 ios 应用程序的最快捷的方式。xcode 具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。

背景介绍

xcode前身是继承自next的project builder。
the xcode suite 包含有gnu compiler collection*软件 (gcc、 apple-darwin9-gcc-4.0.1 以及 apple-darwin9-gcc-4.2.1, 默认的是第一个),并支持 c语言、c++、fortran、objective-c、objective-c++、java、applescript、python以及ruby,还提供cocoa、carbon以及java等编程模式。协力厂商更提供了 gnu pascal,free pascal, ada, c#, perl, haskell 和 d语言。xcode套件使用 gdb作为其后台调试工具。
从xcode 3.1开始,xcode也可被用为iphone os的开发环境。
xcode 4.0于2011年3月9日正式发行。该版本非apple开发者注册会员亦能从mac app store中付费下载, 收取us$4.99的费用。
从xcode 4.1开始,针对os x 10.6及os x 10.7用户从mac app store免费下载
xcode主要版本是xcode 5,支持ios7,可以在mac app store免费下载,亦可在ios开发者计划网站下载。
xcode6整合了苹果在wwdc大会上发布的新语言swift1.0版本。
2015年9月16日,苹果在开发者官网发布xcode7正式版,并将swift语言升级到2.0版本[1]  .
根据斯诺登提供的资料,美国*研究人员创建了一个版本的苹果软件应用开发工具xcode,希望借此将监控后门植入到通过苹果应用商店app store发布的应用程序中。

应用编辑

xcode运行于苹果公司的mac操作系统下,是苹果公司向开发人员提供的集成开发环境(非开源),用于开发mac os x,ios的应用程序。[3]
不管你用c、c++、objective-c或java编写程序,在applescript里编写脚本,还是试图从另一个奇妙的工具中转移编码,你会发现 xcode 编译速度极快。每次操作都很快速和轻松。
苹果公司为用户提供了全套免费的cocoa程序开发工具(xcode),和mac os x一起发行,在苹果公司官方的网站下载。

*撤消

xcode 4 的虚拟模型和设计功能让你可以更轻松的开发和维护应用程序。只需选择应用程序中想要编写的部分,然后模型和设计系统将自动创
建分类图表,不仅可以显示编码,还可以让你进行浏览。mac os x core data api 帮你的应用程序创建数据结构。更棒的是,它还自动提供撤消、重做和保存功能,无需编写任何编码。

参考资料库

xcode 整合的 apple reference library 为所有的apple开发者文件提供一个单独的搜索和显示界面,这些文件包括来自苹果电脑公司网站的在线文件,以及存放在你电脑上的文件。新的参考资料库甚至可以帮你将定期更新资料下载到你的电脑,保持文件的最新状态。xcode 将帮你快速找到最新的答案。

编译器

xcode3所使用的编译器是gcc编译器,而在xcode4之后和版本中,xcode所使用的编译器已经替换成为新的llvm编译器。llvm编译器的前端是clang。
xcode 4 的核心部分是苹果电脑公司下一代业界标准的 gcc编译器gcc 4.0。新的编译器利用许多先进的最优化技术帮你从现存编码中获得更多性能。从超级计算世界借鉴来的自动向量化(auto-vectorization)技术可以帮助你释放每台 intel 系统中速度引擎的能量,而不需要编写向量化编码。其他的最优化工具则支持反馈定向的最优化,以及隐藏模块分析。

xcode快捷键

文件

cmd + n: 新文件; cmd + shift + n: 新项目; cmd + o: 打开;
cmd + s: 保存; cmd + shift + s: 另存为;
cmd + w: 关闭窗口; cmd + shift + w: 关闭文件
编辑

cmd + [: 左缩进;cmd + ]: 右缩进;
cmd + ctrl + left: 折叠;cmd + ctrl + right: 取消折叠;
cmd + ctrl + top: 折叠全部函数;cmd + ctrl + bottom: 取消全部函数折叠;
ctrl + u: 取消全部折叠;
cmd + d: 添加书签; cmd + /: 注释或取消注释;
ctrl + .: 参数提示; esc: 自动提示列表
调试

cmd + \: 设置或取消断点;
cmd + opt + \: 允许或禁用当前断点;
cmd + opt + b: 查看全部断点;
cmd + return: 编译并运行(根据设置决定是否启用断点);
cmd + r: 编译并运行(不触发断点);
cmd + y: 编译并调试(触发断点);
cmd + shift + return: 终止运行或调试;
cmd + b: 编译;
cmd + shift + k: 清理;

海量内存

xcode 将赋予你创建诸如计算和渲染引擎应用程序的能力,这些应用程序使用64位内存定址。这非常适合数据集中的应用程序,其通过访问内存中的数据运行速度更快,远胜于磁盘访问。xcode 将为你提供工具来建立并调试适合 intel core i5, i7 和 mac os x lion 的 32 或 64 位应用程序,还可以让你创建包含32位和64位执行能力的 fat binaries。

构建

众所周知,在构建中引进多重处理器可以提高速度,xcode 能帮你实现这个明显的结论。利用支持 rendezvous 的分布式构建功能,可以轻易地把编译工作量分散到闲置的电脑上来寄放构建,或者更好是在单独的电脑上开发一个专门的 xserve 构建寄放区,快速处理那些耗时的任务。

java

xcode 4 拥有众多功能,为 java 开发人员赋予了更多的开发能力。利用改进的 code sense 索引及 ant 项目模板,java 用户可以继续使用他们的标准 java 包,并构建具有 xcode 关键生产功能的工具。java 代码填充为你提供类名、方法、变量及其他关键信息。在 xcode 中创建 java应用程序比以往更容易。

输入

因为 xcode 支持 codewarrior 风格相关项目参考,所以可以保证把 codewarrior 项目文件快速方便地转移到 xcode。因为 xcode 兼容 codewarrior 风格在线编码汇编,所以从 codewarrior 到 xcode 转变的消耗得到降低, 也使得开发人员手动调整应用程序的临界性能部分。
苹果电脑公司的 mac os x 综合开发环境xcode 为各种类型的 mac os x软件项目提供项目编辑、搜索和浏览,文件编辑,项目构建和调试设备等功能。
xcode 可用来辅助开发应用程序、工具、架构、数据库、嵌入包、核心扩展和设备驱动程序。xcode 支持开发人员使用 c、 c++、objective c、 applescript 和 java。
xcode 能够和 mac os x 里众多其它的工具协作,例如综合用户界面结构应用程序;编译器如 gcc、javac 和jikes;还有调试工具如 gdb。
另外,你可以用 applescript studio 组增加一个 aqua 界面到系统和应用程序脚本、命令行工具、以及网络应用程序中。以上三者无论如何都能在任何平台组合成最强大的脚本环境。

远程调试

调试全屏幕应用程序(比如游戏)具有很大的挑战性。将调试窗口放在什么位置呢?有了 xcode 2.0 的绘图远程调试,所有强大的 xcode 调试功能(例如数据格式程序、fix、continue)都可以在远程机器上用来调试应用程序。利用与远程调试阶段的加密连接,xcode 可以保证你的数据安全。

开发

xcode 4 允许你开发基于ios的ipad、iphone、ipod touch 设备应用程序,只要你有mac os x snow leopard 10.6.2 以上版本 mac os 操作系统,便可安装ios sdk,如果你有ios设备,便可让xcode把应用程序部署到你的ios设备上,不然,你还可以使用iphone仿真器进行调试。xcode提供了友好而方便的应用程序开发环境,这样你就可以开发出好的ios应用程序了。

如果你是数据中心或云计算it圈子的人,这一年多来应该一直在听到普通的容器、尤其是docker,关于它们的新闻从未间断过。docker1.0在今年6月发布后,声势更是达到了前所未有的程度。

Docker到底是什么?Docker为什么它这么火! 

动静之所以这么大,就是因为许多公司在以惊人的速度采用docker。在今年7月的开源大会(oscon)上,我遇到了早已将服务器应用程序从虚拟机(vm)转移到容器的无数企业。的确,docker公司主管服务和支持的副总裁james turnbull在会上告诉我,其中有三家大银行一直在使用docker的测试版,现已在生产环境中使用docker。对任何早期技术来说,这无疑是极大的充满自信的举动,要知道它在安全至上的金融界几乎闻所未闻。

与此同时,docker这项开源技术不仅仅是红帽和canonical等linux巨头眼里的宠儿。微软等专有软件公司也在热烈拥抱docker。

那么,为什么大家都追捧容器和docker呢?james bottomley是parallels公司的服务器虚拟化首席技术官,也是一位知名的linux内核开发人员。他向我解释,hyper-v、kvm和xen等虚拟机管理程序都“基于虚拟化硬件仿真机制。这意味着,它们对系统要求很高。”

然而,容器却使用共享的操作系统。这意味着它们在使用系统资源方面比虚拟机管理程序要高效得多。容器不是对硬件进行虚拟化处理,而是驻留在单单一个linux实例上。这反过来意味着,你可以“丢弃没有用的99.9%的虚拟机垃圾,剩下一个小巧简洁的胶囊式容器,里面含有你的应用程序,”bottomley如是说。

据bottomley声称,因此,借助经过全面调优的容器系统,你就可以在同一硬件上拥有数量比使用xen虚拟机或kvm虚拟机多出四到六倍的服务器应用实例。

是不是觉得听起来很不错?毕竟,你可以让服务器运行多得多的应用程序。那么,为什么之前没有人做过呢?实际上,之前有人做过。容器其实是个旧概念。

容器可以追溯到至少2000年和freebsd jails。甲骨文solaris也有一个类似概念,名为zones;parallels、谷歌和docker等公司一直在致力于研发诸如openvz和lxc(linux容器)之类的开源项目,旨在让容器运行起来顺畅又安全。

的确,很少有人知道容器,但大多数人多年来一直在使用容器。谷歌就有自己的开源容器技术lmctfy(let me contain that for you,意为“让我容纳你的程序”)。只要你使用谷歌的某项功能:比如搜索、gmail、google docks或无论其他什么,就分配了一个新的容器。

然而,docker建立在lxc的基础上。与任何容器技术一样,就该程序而言,它有自己的文件系统、存储系统、处理器和内存等部件。容器与虚拟机之间的区别主要在于,虚拟机管理程序对整个设备进行抽象处理,而容器只是对操作系统内核进行抽象处理。

这反过来意味着:虚拟机管理程序能做容器做不了的一件事就是,使用不同的操作系统或内核。所以,举例说,你可以使用微软azure,同时运行windows server2012的实例和suse linux企业级服务器的实例。至于docker,所有容器都必须使用同样的操作系统和内核。

另一方面,如果你只是想让尽可能多的服务器应用实例在尽可能少的硬件上运行,可能不大关心运行多个操作系统虚拟机。要是同一应用程序的多个副本正是你需要的,那么你会喜欢上容器。

改用docker这一举措有望每年为数据中心或云计算服务提供商节省数千万美元的电力和硬件成本。所以难怪它们在一窝蜂地尽快采用docker。

docker带来了之前技术所没有的几个新特点。第一是,与之前的方法相比,docker让容器部署和使用起来更容易、更安全。此外,由于docker与其他容器领域的巨擘进行了合作,包括canonical、谷歌、红帽和parallels,共同开发其关键的开源组件libcontainer,它为容器带来了迫切需要的标准化。

与此同时,广大开发人员可以使用docker封装、交付和运行任何应用程序,应用程序成为轻型的、可移植的、自给自足的lxc容器,可以在任何地方运行。正如bottomley告诉我,“容器让你立即享有应用程序可移植性。”

市场研究公司451 research的资深分析师jay lyman补充道:“企业组织力求以一种高效、标准化、可重复的方式,让应用程序和工作负载更易于移植和分发,而有时很难做到这点。正如github通过共享源代码来促进合作和创新那样,docker hub、official repos和商业支持也在帮助众多企业通过改进封装、部署和管理应用程序的方式,应对这个难题。”

最后但并非最不重要的,docker容器易于部署到云端。正如ben lloyd pearson在opensource.com上写道:“docker采用了一种特别的方式,以便可以整合到大多数devops(开发运营)应用程序当中,包括puppet、chef、vagrant和ansible,或者可以独自使用,以管理开发环境。主要卖点是,它简化了通常由另外这些应用程序执行的好多任务。具体来说,有了docker,人们就可以搭建与活动服务器一模一样的本地开发环境,从同一个主机运行多个开发环境(每个开发环境有独特的软件、操作系统和配置),在新的或不同的服务器上测试项目,以及让任何人都可以在设置一模一样的情况下处理同一项目,无论本地主机环境怎样。”

简而言之,docker能为你做的事情就是:相比其他技术,它能让更多数量的应用程序在同一硬件上运行;它让开发人员易于快速构建可随时运行的容器化应用程序;它大大简化了管理和部署应用程序的任务。总而言之,我能理解作为一项企业级技术,docker为何一下子蹿红。我只是希望它不负众望,否则外头会有一些忧心忡忡的ceo和cio。

英文:http://www.zdnet.com/what-is-docker-and-why-is-it-so-darn-popular-7000032269/