使用UI为AWS创建一个Docker栈是一个不错的练习。它可以帮助我们更好地理解事情是如何工作的。然而,我们的目标是尽可能地实现过程自动化。通过自动化,我们获得了速度、可靠性和更高的质量。当执行一些手动任务时,比如使用UI和选择不同的选项,增加了由于人为错误而出错的可能。我们的速度也不够快。当需要执行重复的步骤时,我们的速度比机器的慢多了。由于我对手动执行重复任务的不信任,所以很自然地会寻找一种更自动化的方式为AWS创建Docker栈。通过AWS控制台所做的就是填充一些字段,这些字段在后台生成参数,这些参数后面被用来执行一个CloudFormation过程。不使用UI可以做同样的事情。
首先将定义一些环境变量。它们与你在本章中已经创建的变量相同。如果之前的终端会话仍然打开,就可以跳过下面的命令:
请将us-east-1改为你所选择的区域,并以实际的值代替[...]。
如果你还记得让我们选择模板的第一个页面,那么你会记得有一个字段被预先填充为CloudFormatation模板的URL。撰写本书时,该模板是Docker.tmpl(https://editions-us-east-1.s3.amazonaws.com/aws/stable/Docker.tmpl)。请注意地址因区域不同而不同。现在将使用us-east-1的链接。
要检查模板,可以使用curl来获取它的内容:
请花一些时间浏览输出。即使你不熟悉CloudFormation语法,也应该认识AWS资源。
模板中我们最感兴趣的部分是元数据(Metadata):
输出如下:
可以使用ParameterLabels来自定义模板的结果。
以下命令创建的栈与使用AWS控制台生成的栈相同:(www.xing528.com)
命令应该是不言自明的。使用aws及所有需要的参数来创建CloudFormation栈。
可以通过执行cloudformation describe-stack-resources命令来监视栈资源的状态:
一段时间后,应该创建了三个manager实例:
现在可以登录到其中一个manager并开始创建服务。我将跳过创建服务的例子,并验证它们是否工作正常。最终结果与我们先前使用AWS控制台创建的集群相同。
你可以自己探索集群,并在完成之后删除栈:
对于任何小集群,AWS中的Docker比使用docker-machine和aws命令的组合要好得多。它是一种更健壮的和更可靠的方案。然而,它也有其缺点。
AWS中的Docker出现的时间还很短,并且经常发生变化。而且,它是如此的新,以至于文档几乎不存在。
作为一种开箱即用的方案,它非常容易使用,几乎不费什么力气。这既是好事,也存在一些问题。如果你所需要的或多或少已经被AWS中的Docker所支持,这是一种很好的选择。但是,如果你的需求不同,那么在尝试根据你的需要调整模板时,可能会遇到很多问题。解决方案是基于自定义的OS、CloudFormate模板和专门为此目的构建的容器。除模板外,其他任何修改都是不可取的。
总的来说,我认为AWS的Docker有着非常光明的前景,在大多数情况下,是一种比docker-machine更好的方案。如果这两个是唯一的选择,那么我会投票给AWS的Docker。幸运的是,还有许多其他选项可以选择,远不是一个章节可以讨论的。你可能正在阅读本书的印刷版,但我不想牺牲很多树木。因此,我只提供另外一组工具,可以使用这些工具来创建Swarm集群(或任何其他类型的集群)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。