一个软件项目的成功通常是根据它所产生的生态系统来衡量的。围绕或基于核心技术构建的项目增加了功能和易用性,并且随着时间的推移它们通常会变得更好。一个很好的例子是Docker,这个软件容器化系统让IT部门专注于应用程序,而不是虚拟机,作为标准的生产单元。Docker一直受到第三方和第三方开发者的关注,但很多项目扩展、补充或改进了Docker,却没有成为Docker的一部分。以下是当今开发中最著名的10个项目,从长远来看,其中一些有机会成为Docker的一部分。Kubernetes说起第三方Docker项目,自然要提到Kubernetes,它是谷歌开发的开源Docker管理工具,用于跨计算机集群部署容器。除了通过保持集群上部署的容器平衡来帮助管理Docker节点的工作负载之外,Kubernetes还提供了一种容器之间无需打开网络端口或执行其他操作即可相互通信的方式。这些特性,再加上Kubernetes是用Go编写的(这也是Docker的编写语言),强烈建议它会在未来的某个时候合并到Docker中。项目:KubernetesGitHub:https://github.com/GoogleCloudPlatform/kubernetesDockersh如果您希望用户可以访问外壳(shell),但担心安全后果,Dockersh提供了一种Dockerized方式,为Shell会话提供高于平均水平的安全性.Dockersh允许多个用户连接到主机,每个用户运行一个由他们选择的单独Docker容器生成的shell。用户可以查看他们的主目录,并对它们进行彻底的更改,但他们只能看到他们自己的进程,并且只能使用他们自己的专用网络堆栈。开发人员担心Dockersh中潜在的安全漏洞,不建议将其用于不受限制的公共访问,至少在Docker以这种方式得到改进之前。仅此概念就使该项目引人注目。项目:DockershGitHub:https://github.com/Yelp/dockershDockerUI虽然大多数开发人员和管理人员使用命令行来创建和运行Docker容器,但Docker的RemoteAPI允许他们充分利用REST(RepresentationalStateTransferprotocol)API,运行相同的命令。这时候,DockerUI就派上用场了。此Web前端程序可让您处理许多通常通过Web浏览器的命令行管理的任务。一台主机上的所有容器只需一个连接即可处理,项目几乎没有依赖关系。然而,它仍在大量开发中,但它已获得MIT许可,因此可以免费重用。此外,它不包含任何内置身份验证或安全机制,因此请务必将任何公开的DockerUI连接置于受密码保护的系统之后。项目:DockerUIGitHub:https://github.com/crosbymichael/dockeruiShipyardShipyard使用Citadel集群管理工具包来简化跨多个主机的Docker容器集群的管理。通过Web用户界面,您可以一目了然地浏览相关信息,例如您的容器使用了多少处理器和内存资源,正在运行哪些容器,您可以查看所有集群上的事件日志。包含完整的API和命令行界面(CLI),以及专门构建的Docker映像(也称为扩展映像)可用于扩展Shipyard的功能。后一种想法仍在开发中,但负载平衡/路由镜像可通过Interlock项目获得。项目:ShipyardGitHub:https://github.com/shipyard/shipyardKitematic许多项目旨在让Docker成为基于OSX的程序员的实用桌面环境开发工具,Kitematic就是其中之一。它简化了下载、启动和管理Docker镜像的过程,使任务像在VMwareWorkstation等应用程序中使用虚拟机一样简单。同一类别的其他项目包括:DVM、DockerOSX和OSXInstaller,尽管Kitematic可能是其中最完整的。唯一的主要缺点是卸载过程有点复杂。项目:KitematicGitHub:https://github.com/kitematic/kitematicLogspoutDocker尚未提供管理在Docker容器内运行的程序生成的日志的方法。Logspout是一个Docker容器,只有14MB大小,以BusyBox为核心,它可以将日志从容器应用程序发送到一个中央位置,例如单个JSON对象或通过HTTPAPI可用的流端点。在挖掘的信息方面,Logspout目前功能有限,因为它只实现了容器的标准输出(stdout)和标准错误输出(stderr),尽管有计划允许更全面的日志功能。未来应密切关注该项目。项目:LogspoutGitHub:https://github.com/progrium/logspoutAutodockDocker自动化工具可以说是一款热门产品。毕竟,更简单的自动化不是Docker的全部意义所在吗?但Autodock以一些不同之处脱颖而出。它设计用于在使用Salt和SaltStack作为主要自动化技术的环境中运行,它还专门用于通过确定给定Docker集群中的哪些服务器负载最少来尽快启动新容器。一个可能的缺点是它需要很多基本组件(SaltStack、Golang、Etcd和Python)才能运行。项目:AutodockGitHub:https://github.com/cholcombe973/autodockDIND(Docker-in-Docker)Docker-in-Docker就像它的名字一样:这是一种在Docker容器中运行Docker的方法,在Docker6.0中实现方式是在容器中加入特权模式。撇开噱头和笑话不谈,如果您想将Docker本身作为服务提供给Docker容器,那么这个工具很有用——比如说,如果您想尝试某种自动化工具或方法。请注意,Docker的“内部”实例是实际的Docker二进制代码,可以在构建时从docker.io获得。另一件事要记住:以这种方式运行的实例是在特权模式下运行的;因此,在将它们暴露给非Docker化的外部世界时,您需要采取更多的预防措施。项目:Docker-in-DockerGitHub:https://github.com/jpetazzo/dindHeroku-DockerHeroku是一个出色的平台即服务(PaaS),支持多种语言,今天在某种程度上仍然如此,但Docker让我们做类似PaaS的工作几乎可以在任何地方进行。出于这个原因,对于那些正在寻找将现有Heroku项目迁移到Docker而无需从头开始重建的人来说,这是一个很好的选择。这个简单的小项目采用现有的Heroku应用程序,并通过命令行将其转换为Docker映像,只需几条命令。项目:Heroku-DockerGitHub:https://github.com/ddollar/heroku-dockerDockerNodeTester当你用一种最热门的IT新技术作为另一种IT新技术的测试机制时,用什么?显然是DockerNodeTester。DNT提供了一个测试平台,Node.js项目在Docker容器中针对多个版本的Node.js运行,然后以表格格式输出结果。您还可以针对最新版本的Node进行测试,无论版本是什么。请注意,不同版本的Node是从源代码构建的,这意味着您最终会得到Node整个源代码树的本地副本;确保您有足够的空间来存放它。项目:DockerNodeTesterGitHub:https://github.com/rvagg/dnt英文:http://www.itworld.com/article/2841314/10-open-source-tools-to-make-docker-even-more-powerful.htm【编者推荐】蓬勃发展的Docker解决了哪些问题?Docker到底是什么?为什么这么火!如何授予用户在Fedora中使用Docker的权限?Docker与微软展开战略合作,实现基于容器的跨平台应用开发Docker自动化:StackEngine打算如何让生产环境中的容器井然有序?【责任编辑:林教授电话:(010)68476606】
