源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Docker Machine创建Azure虚拟主机

  • 时间:2020-10-29 22:08 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Docker Machine创建Azure虚拟主机
搭建环境向来是一个重复造轮子的过程,Docker Machine 则把用户搭建 Docker 环境的各种方案汇集在了一起。笔者在《[url=http://www.1sucai.cn/article/117314.htm]Docker Machine 简介[/url]》一文中演示了使用 Docker Machine 在本地的 vSphere 主机中安装 Docker 环境。但是在云计算大爆炸的今天,真正让我们头疼的可能是五花八门的 IaaS 平台!这才是 Docker Machine 真正发挥威力的地方。 Docker Machine 把与平台相关的部分封装到了不同的驱动中。只要为某个 IaaS 平台提供了驱动程序,Docker Machine 就能够支持该平台上的操作。像 Azure、AWS、GCE、DigitalOcean 等大的厂商早已被支持。本文将以 Azure 为例介绍使用 Docker Machine 在 IaaS 上创建并管理 Docker 虚拟主机。 如果您还不了解 Docker Machine ,请先移步笔者的前两篇文章补充相关知识:《[url=http://www.1sucai.cn/article/117314.htm]Docker Machine 简介[/url]》、《[url=http://www.1sucai.cn/article/117324.htm]Docker Machine 详解[/url]》。 [b]准备[/b] 我们的目标是通过 Docker Machine 在 Azure 上面创建一台安装了 Docker 的虚拟主机。因为 Azure 上的所有资源都必须通过订阅账号才能授权使用,所以我们首先得准备一个 Azure 的订阅账号。国内的 Azure 一直在搞一元试用的活动,赶快去申请一个吧! Azure 建议我们把资源通过 resource group 组织起来。为了演示方便,我们新创建一个名为 nickcontainer 的 resource group 存放将要创建的虚机: [img]http://img.1sucai.cn/uploads/article/2018010709/20180107090116_0_98900.png[/img] 此时 resource group 中还没有任何内容。 [b]创建云端虚机[/b] 使用 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 进行操作: [img]http://img.1sucai.cn/uploads/article/2018010709/20180107090116_1_96883.jpg[/img] 这时执行流程停住了,上图的输出中说的很明确,需要在浏览器中访问 https://aka.ms/devicelogin,然后输入一个验证码: [img]http://img.1sucai.cn/uploads/article/2018010709/20180107090116_2_54581.png[/img] 填入验证码并继续: [img]http://img.1sucai.cn/uploads/article/2018010709/20180107090117_3_25526.png[/img] 在此处输入你的订阅账号和密码就可以进完成身份验证了: [img]http://img.1sucai.cn/uploads/article/2018010709/20180107090117_4_62650.png[/img] 此时身份认证过程已经完成,可以关掉浏览器了。回到刚才的命令行,发现又接着往下执行了。整个过程大概需要几分钟,直到输出下面的内容: [img]http://img.1sucai.cn/uploads/article/2018010709/20180107090118_5_31251.png[/img] 让我们看看虚机 testvmtigger 的状态: [img]http://img.1sucai.cn/uploads/article/2018010709/20180107090118_6_338.png[/img] 已经处于 "Runing" 状态,连上 Docker daemon 试试: [img]http://img.1sucai.cn/uploads/article/2018010709/20180107090120_7_36188.jpg[/img] 可以看到服务器端的版本是 17.05.0-ce,远高于本地客户端的版本。 再让我们回到 Azure 的 portal 上,看看 resource group 中新创建了哪些内容: [img]http://img.1sucai.cn/uploads/article/2018010709/20180107090120_8_14439.png[/img] 一看吓一跳,怎么这么多东西?其实玩过 Azure 虚机的同学都知道,当我们创建一台虚机的同时会创建这台虚机依赖的所有资源,比如存储、虚拟网络、网络安全组、可用性集合、网卡、公有IP地址等等。这里我们只关心两点(上图中的红框框)就足够了:第一,虚机被成功创建了;第二,所有资源的区域都在东亚。 经过一轮检查,我们可以确定 create 命令很好的完成了任务:在 Azure 上创建了虚机,并且安装了 Docker 环境。下面我们解释一下 create 命令中主要的几个参数。 [b]参数详解[/b] [b]--driver azure[/b] driver 参数告诉 Docker Machine 我们操作的对象在 Azure 云上,需要使用 Azure 相关的接口来进行操作。 [b]--azure-environment AzurePublicCloud [/b]其实存在多套相互独立的 Azure 云环境,比如国内的。所以需要用这个参数来指定具体的 Azure 云环境。默认值是 AzurePublicCloud,指向我们说的 Azure 国际版。连接国内版需要指定为 AzureChinaCloud。 [b]--azure-subscription-id xxxxxxxxxxxxxxxxxxxxxxxxxx [/b]这个是与你账号关联的订阅 ID,Azure 内部的操作都是依赖于这个 ID 的。 [b]--azure-location "East Asia" [/b]Azure 在全球各地部署了很多的数据中心,我们可以通过 location 指定创建的资源所在的位置。这个位置当然是越靠近用户越好,国内的国际版用户选择东亚稍微好一点。 [b]--azure-size Standard_A0 [/b]Azuer 根据不同的 size(其实就是配置)对虚拟机进行收费,demo 中选择的 Standard_A0 大概是这个样子: [img]http://img.1sucai.cn/uploads/article/2018010709/20180107090121_9_39444.png[/img] 虽然配置不高,但作为 demo 来说已经足够用了。MS 提供了非常丰富的 size 可供选择,如果你要创建生产环境的虚机实例,可能需要选择每个月几十到几百美金的实例。 [b]--azure-image canonical:UbuntuServer:16.04.0-LTS:latest [/b]对于生产环境来说,虚机的镜像是至关重要的。Demo 中使用了 ubuntu server 16.04 的镜像,当然我们可以在这里指定 Azure 支持的任何虚拟机镜像。这点可比只能使用 boot2docker 的驱动强多了! [b]--azure-ssh-user nick [/b]可以通过 SSH 登录到虚拟机中的用户,让我们试一下: [img]http://img.1sucai.cn/uploads/article/2018010709/20180107090121_10_8464.jpg[/img] 直接以用户 nick 登录成功了,其实 Docker Machine 已经为这个用户配置了通过秘钥登录的相关信息。 [b]--azure-resource-group nickcontainer [/b]新创建的资源所属的 resource group。 [b]清除资源[/b] Docker Machine 不仅可以创建虚机,还可以管理虚机。所谓的管理,仅仅是能够 stop、start 和 restart 吗?答案是可以有更多的功能,但是需要相关驱动的支持。比如 rm 命令,对于 azure 驱动来说,它是可以把刚才创建那一坨东西几乎全部干掉的!执行下面的命令:
$ docker-machine rm testvmtigger
这是一个很危险的操作,所以会有一个确认执行的步骤,然后就真的把 Azure 上的资源给干掉了(除了存储部分): [img]http://img.1sucai.cn/uploads/article/2018010709/20180107090122_11_54590.png[/img] 虽然笔者觉得这真的是一个很强很酷的功能,但还是要警告自己和同学们:一定要慎用! [b]总结[/b] 云服务为我们打开了一扇新的大门,当然对运维人员来说也带来了诸多的挑战。如何选择对云端操作友好的工具就成了我们提升效率的重要途径。就 Docker 操作来说,Docker Machine 在这个方向上做了很好的尝试。真心的希望这个工具能够不断的完善,成为运维人员手中的一把利剑。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部