Docker中怎么利用Machine创建Azure虚拟主机,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
成都创新互联公司服务项目包括额济纳网站建设、额济纳网站制作、额济纳网页制作以及额济纳网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,额济纳网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到额济纳省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
Azure 建议我们把资源通过 resource group 组织起来。为了演示方便,我们新创建一个名为 nickcontainer 的 resource group 存放将要创建的虚机:
此时 resource group 中还没有任何内容。
创建云端虚机
使用 Docker Machine,一个 create 命令就能搞定:
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-environment AzurePublicCloud 修改为 --azure-environment AzureChinaCloud。
执行上面的命令,首先会验证我们是否有权限访问 Azure 进行操作:
这时执行流程停住了,上图的输出中说的很明确,需要在浏览器中访问 https://aka.ms/devicelogin,然后输入一个验证码:
填入验证码并继续:
在此处输入你的订阅账号和密码就可以进完成身份验证了:
此时身份认证过程已经完成,可以关掉浏览器了。回到刚才的命令行,发现又接着往下执行了。整个过程大概需要几分钟,直到输出下面的内容:
让我们看看虚机 testvmtigger 的状态:
已经处于 "Runing" 状态,连上 Docker daemon 试试:
可以看到服务器端的版本是 17.05.0-ce,远高于本地客户端的版本。
再让我们回到 Azure 的 portal 上,看看 resource group 中新创建了哪些内容:
一看吓一跳,怎么这么多东西?其实玩过 Azure 虚机的同学都知道,当我们创建一台虚机的同时会创建这台虚机依赖的所有资源,比如存储、虚拟网络、网络安全组、可用性集合、网卡、公有IP地址等等。这里我们只关心两点(上图中的红框框)就足够了:第一,虚机被成功创建了;第二,所有资源的区域都在东亚。
经过一轮检查,我们可以确定 create 命令很好的完成了任务:在 Azure 上创建了虚机,并且安装了 Docker 环境。下面我们解释一下 create 命令中主要的几个参数。
参数详解
--driver azure
driver 参数告诉 Docker Machine 我们操作的对象在 Azure 云上,需要使用 Azure 相关的接口来进行操作。
--azure-environment AzurePublicCloud
其实存在多套相互独立的 Azure 云环境,比如国内的。所以需要用这个参数来指定具体的 Azure 云环境。默认值是 AzurePublicCloud,指向我们说的 Azure 国际版。连接国内版需要指定为 AzureChinaCloud。
--azure-subscription-id xxxxxxxxxxxxxxxxxxxxxxxxxx
这个是与你账号关联的订阅 ID,Azure 内部的操作都是依赖于这个 ID 的。
--azure-location "East Asia"
Azure 在全球各地部署了很多的数据中心,我们可以通过 location 指定创建的资源所在的位置。这个位置当然是越靠近用户越好,国内的国际版用户选择东亚稍微好一点。
--azure-size Standard_A0
Azuer 根据不同的 size(其实就是配置)对虚拟机进行收费,demo 中选择的 Standard_A0 大概是这个样子:
虽然配置不高,但作为 demo 来说已经足够用了。MS 提供了非常丰富的 size 可供选择,如果你要创建生产环境的虚机实例,可能需要选择每个月几十到几百美金的实例。
--azure-image canonical:UbuntuServer:16.04.0-LTS:latest
对于生产环境来说,虚机的镜像是至关重要的。Demo 中使用了 ubuntu server 16.04 的镜像,当然我们可以在这里指定 Azure 支持的任何虚拟机镜像。这点可比只能使用 boot2docker 的驱动强多了!
--azure-ssh-user nick
可以通过 SSH 登录到虚拟机中的用户,让我们试一下:
直接以用户 nick 登录成功了,其实 Docker Machine 已经为这个用户配置了通过秘钥登录的相关信息。
--azure-resource-group nickcontainer
新创建的资源所属的 resource group。
清除资源
Docker Machine 不仅可以创建虚机,还可以管理虚机。所谓的管理,仅仅是能够 stop、start 和 restart 吗?答案是可以有更多的功能,但是需要相关驱动的支持。比如 rm 命令,对于 azure 驱动来说,它是可以把刚才创建那一坨东西几乎全部干掉的!执行下面的命令:
$ docker-machine rm testvmtigger
这是一个很危险的操作,所以会有一个确认执行的步骤,然后就真的把 Azure 上的资源给干掉了(除了存储部分):
看完上述内容,你们掌握Docker中怎么利用Machine创建Azure虚拟主机的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!