用DockerMachine创建Azure虚拟主机
搭建环境向来是一个重复造轮子的过程,则把用户搭建环境的各类方案汇集在了一起。笔者在《简介》一文中演示了使用在本地的主机中安装环境。并且在云估算大爆燃的明天,真正让我们头痛的可能是五花八门的IaaS平台!这才是真正发挥威力的地方。
把与平台相关的部份封装到了不同的驱动中。只要为某个IaaS平台提供了驱动程序,就才能支持该平台上的操作。像Azure、aws、GCE、等大的厂商已经被支持。本文将以Azure为例介绍使用在IaaS上创建并管理虚拟主机。
倘若您还不了解,请先移步笔者的前两篇文章补充相关知识:《简介》、《详解》。
打算
我们的目标是通过在Azure里面创建一台安装了的虚拟主机。由于Azure上的所有资源都必须通过订阅帐号就能授权使用,所以我们首先得打算一个Azure的订阅帐号。国外的Azure仍然在搞一元试用的活动,赶紧去申请一个吧!
Azure建议我们把资源通过group组织上去。为了演示便捷,我们新创建一个名为的group储存即将创建的虚机:
此时group中还没有任何内容。
创建云端虚机
docker-machine create \ --driver azure \ --azure-environment AzurePublicCloud \ --azure-subscrIPtion-id xxxxxxxxxxxxxxxxxxxxxxxxxx \ --azure-location "East Asia" \ --azure-size Standard_A0 \ --azure-image canonical:UbuntuServer:16.04.0-LTS:latest \ --azure-ssh-user nick \ --azure-resource-group nickcontainer \ --azure-availability-set testvmtiggeras \ testvmtigger
使用国外Azure的用户请把参数--azure-更改为--azure-。
执行前面的命令,首先会验证我们是否有权限访问Azure进行操作:
这时执行流程挪开了,上图的输出中说的很明晰,须要在浏览器中访问,之后输入一个验证码:
填入验证码并继续:
在此处输入你的订阅帐号和密码就可以进完成身分验证了:
此时身分认证过程早已完成,可以关闭浏览器了。回到刚刚的命令行,发觉又接着往下执行了。整个过程大约须要几分钟,直至输出下边的内容:
让我们瞧瞧虚机的状态:
早已处于""状态,连上试试:
可以看见服务器端的版本是17.05.0-ce,远低于本地顾客端的版本。
再让我们回到Azure的上,瞧瞧group中新创建了什么内容:
一看吓一跳,如何那么多东西?虽然玩过Azure虚机的朋友都晓得,当我们创建一台虚机的同时会创建这台虚机依赖的所有资源,例如储存、虚拟网路、网络安全组、可用性集合、网卡、公有IP地址等等。这儿我们只关心两点(上图中的红框框)就足够了:第一,虚机被成功创建了;第二,所有资源的区域都在东亚。
经过一轮检测,我们可以确定命令挺好的完成了任务:在Azure上创建了虚机,但是安装了环境。下边我们解释一下命令中主要的几个参数。
参数解读
--azure
参数告诉我们操作的对象在Azure云上,须要使用Azure相关的插口来进行操作。
--azure-
虽然存在多套互相独立的Azure云环境,例如国外的。所以须要用这个参数来指定具体的Azure云环境。默认值是,指向我们说的Azure国际版。联接国外版须要指定为。
--azure--id
这个是与你帐号关联的订阅ID,Azure内部的操作都是依赖于这个ID的。
--azure-"EastAsia"
Azure在全球各地布署了好多的数据中心,我们可以通过指定创建的资源所在的位置。这个位置其实是越紧靠用户越好,国外的国际版用户选择东亚稍为好一点。
--azure-size
Azuer依照不同的size(虽然就是配置)对虚拟机进行收费,demo中选择的大约是这个样子:
尽管配置不高,但作为demo来说早已足够用了。MS提供了十分丰富的size可供选择,假如你要创建生产环境的虚机实例,可能须要选择每位月几十到几百美元的实例。
--azure-image::16.04.0-LTS:
对于生产环境来说,虚机的镜像是至关重要的。Demo中使用了16.04的镜像,其实我们可以在这儿指定Azure支持的任何虚拟机镜像。这点可比只能使用的驱动强多了!
--azure-ssh-usernick
可以通过SSH登入到虚拟机中的用户,让我们试一下:
直接以用户nick登陆成功了,虽然早已为这个用户配置了通过密钥登陆的相关信息。
--azure--group
新创建的资源所属的group。
去除资源
除了可以创建虚机,还可以管理虚机。所谓的管理,仅仅是能否stop、start和吗?答案是可以有更多的功能,而且须要相关驱动的支持。例如rm命令,对于azure驱动来说,它是可以把刚刚创建那一坨东西几乎全部杀死的!执行下边的命令:
$ docker-machine rm testvmtigger
这是一个很危险的操作,所以会有一个确认执行的步骤,之后就真的把Azure上的资源给杀死了(不仅储存部份):
尽管笔者认为这真的是一个很强很酷的功能,但还是要警告自己和朋友们:一定要慎用!
总结
云服务为我们打开了一扇新的房门,其实对运维人员来说也带来了众多的挑战。怎么选择对云端操作友好的工具就成了我们提高效率的重要途径。就操作来说,在这个方向上做了挺好的尝试。真心的希望这个工具才能不断的建立,成为运维人员手中的一把利剑。
相关文章: