通过从应用程序中学习企业APM产品,发现更快,更高效的性能监控。 参加AppDynamics APM导览!
什么是Docker?
简而言之,Docker平台旨在使使用容器更容易创建,部署和运行应用程序。 容器使开发人员可以将应用程序与所有必需的部分打包在一起,例如库和依赖于它的其他元素,然后将其作为一个软件包打包。 通过将应用程序和相关元素保留在容器中,开发人员可以确保该应用程序可以在任何Linux机器上运行,无论该机器可能具有哪种自定义设置,或与用于写入和写入的机器有何不同。测试代码。 这对开发人员很有帮助,因为它使整个应用程序生命周期内的工作更加轻松。
Docker有点像虚拟机 ,但是它无需创建整个虚拟操作系统(OS),而是使应用程序可以利用与其所运行的系统相同的Linux内核。 这样,该应用程序仅需附带主机上尚未存在的东西,而不是全新的操作系统。 这意味着与依赖于系统的应用程序相比,应用程序要小得多,并且性能要好得多。 它还有许多其他好处 。
Docker是面向开发人员和系统管理员的分布式应用程序的开放平台。 它为基础结构不可知的CaaS模型提供了一套集成的功能。 使用Docker,IT运营团队能够保护,配置和管理基础架构资源和基本应用程序内容,而开发人员则能够以自助服务方式构建和部署其应用程序。
主要好处
- 开源:Docker的另一个关键方面是它是完全开源的。 这意味着任何人都可以为平台做出贡献,并对其进行调整和扩展,以满足他们自己的需求,如果他们需要Docker所不具备的其他额外功能,则它们是开箱即用的。 所有这些使它对于开发人员和系统管理员而言是极为方便的选择。 低开销:由于开发人员不必一直提供一直到硬件级别的真正虚拟化环境,因此他们可以通过仅创建使之运行所需的库和OS组件来降低开销成本。
- 敏捷:Docker的构建考虑了速度和简便性,这就是它如此受欢迎的部分原因。 开发人员现在可以非常简单地将任何软件及其依赖项打包到一个容器中。 它们可以使用任何语言,版本和工具,因为它们被打包到一个容器中,该容器实际上使所有元素标准化,而不必付出任何代价。
- 可移植:Docker还以全新的方式使应用程序容器完全可移植。 开发人员现在可以在不破坏代码的情况下将应用程序从开发交付到测试和生产。 环境的差异不会对容器中包装的内容产生任何影响。 此外,也无需更改应用程序即可使其在生产环境中正常工作,这对IT运营团队而言非常有用,因为现在他们可以通过跨数据中心移动应用程序来避免供应商锁定。
- 控制:由于环境是标准化的,因此Docker在应用程序生命周期内提供了最终控制。 这使得在此过程中回答有关安全性,可管理性和可扩展性的问题变得容易得多。 IT团队可以自定义控制级别和灵活性,以使特定项目的服务水平,性能和法规遵从性保持一致。
它是如何创建的以及如何产生的?
过去以不同的方式开发应用程序。 有成千上万的私有数据中心,其中运行着由庞大的代码库运行和控制的现成软件,这些代码库每年必须进行一次更新。 随着云的发展,所有这些都改变了。 而且,由于当今世界各地的公司都非常依赖与客户联系的软件,因此软件选件越来越个性化。
随着软件的不断复杂化,以及服务,依赖项和基础架构的不断扩展,它对达到应用程序的最终状态提出了许多挑战。 这就是Docker进来的地方。
2013年,Docker被开发为一种使用容器在任何地方构建,交付和运行应用程序的方法。 软件容器是软件的标准单元,不受包含在其中的代码和依赖项的影响。 这帮助开发人员和系统管理员处理了无需进行任何修改即可跨基础架构和各种环境传输软件的需求。
Docker在2013年3月13日的PyCon Lightning Talk – Linux容器的未来中启动。几个月后,创建了Docker吉祥物Moby Dock。 九月份,Docker和Red Hat宣布了一项主要联盟,引入了Fedora / RHEL兼容性。 该公司于2014年1月获得了1500万美元的B轮融资。2014年7月,Docker收购了Orchard(图),2014年8月,Docker Engine 1.2正式发布。 2014年9月,他们完成了4,000万美元的C轮融资,到2014年12月31日,Docker已达到1亿个容器下载量。 2015年4月,他们又获得了9500万美元的D轮融资,并实现了3亿个容器下载量。
它是如何工作的?
Docker是一种容器即服务(CaaS)。 要了解它是如何工作的,首先了解一下Linux容器是很重要的。
Linux容器
在正常的虚拟化环境中,虚拟机借助管理程序(例如Xen,Hyper-V)在物理机之上运行。 容器在操作系统内核顶部的用户空间上运行。 每个容器都有自己的隔离用户空间,并且可以在一台主机上运行许多不同的容器。 容器使用两个Linux内核功能在主机中隔离:命名空间和控制组。
Linux中有六个名称空间,它们允许容器具有自己的网络接口,IP地址等。容器使用的资源由控制组管理,这允许您限制容器应使用的CPU和内存资源量采用。
码头工人
Docker是一个容器引擎,它使用Linux内核功能在OS之上创建容器并自动在容器上部署应用程序。 它提供了一个轻量级的环境来运行应用程序代码,以便创建更高效的工作流,以在整个生命周期中移动您的应用程序。 它在客户端-服务器架构上运行。 Docker守护程序负责与容器相关的所有操作,并且该守护程序通过cli或REST API从Docker客户端获取命令。
容器是根据图像构建的,可以使用应用程序配置这些图像,并将其用作创建容器的模板。 它们被组织在一个层中,并且图像中的每个更改都作为一个层添加在其顶部。 Docker注册表是存储Docker映像的地方,开发人员使用公共或私有注册表来与他们的团队建立和共享映像。 Docker托管的注册表服务称为Docker Hub,它使您可以从中央位置上载和下载映像。
拥有图像后,您可以创建一个容器,该容器是图像的可写层。 该图像告诉Docker容器包含什么,启动容器时要运行什么进程以及其他配置数据。 容器运行后,您可以对其进行管理,与应用进行交互,然后在完成后停止并删除该容器。 它使您无需更改代码即可轻松使用该应用程序。
为什么开发人员应该关心?
Docker非常适合帮助开发人员进行开发周期。 它使您可以在具有应用程序和服务的本地容器上进行开发,然后可以集成到连续的集成和部署工作流中。 基本上,它可以使开发人员的生活更加轻松。 由于以下原因,它特别有用:
缩放更容易
Docker使保持工作负载高度可移植性变得容易。 这些容器可以在开发人员的本地主机上运行,也可以在物理或虚拟机上或在云中运行。 它使工作负载的管理变得更加简单,因为您可以使用它轻松,近乎实时地扩展或拆除应用程序和服务。
更高的密度和更多的工作量
Docker是基于管理程序的虚拟机的轻量级且具有成本效益的替代方案,非常适合于高密度环境。 对于希望从现有资源中获得更多收益的中小型部署,它也很有用。
Docker背后的主要供应商和支持者
Docker项目依赖社区支持渠道,例如论坛,IRC和StackOverflow。 Docker已收到许多大型组织的贡献,其中包括:
- 原子项目
- 谷歌
- 的GitHub
- Fedora云
- 阿尔法·戈夫
- 鹤
- Globo.com
许多云供应商都支持Docker,其中包括:
- 微软
- IBM公司
- 机架空间
- 谷歌
- 典范
- 红帽
- 的VMware
- 思科公司
- 亚马孙
请继续关注我们的下一期,我们将在其中进一步深入研究Docker及其功能。 同时,请阅读此博客文章,以了解AppDynamics如何提供对Docker容器的完整可见性。
通过从应用程序中学习企业APM产品,发现更快,更高效的性能监控。 参加AppDynamics APM导览!
翻译自: https://www.javacodegeeks.com/2016/04/introduction-docker-part-1.html