• docker&kubernets篇(十八)


    docker-machine

    1. docker-machine 安装
      base=https://github.com/docker/machine/releases/download/v0.16.0 &&   curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&   sudo mv /tmp/docker-machine /usr/local/bin/docker-machine
         chmod +x /usr/local/bin/docker-machine
    
    • 1
    • 2
    1. docker-machine 简介

    Machine现在已经支持多种虚拟机软件和众多主流IaaS平台。Machine项目针对不同目标平台都提供了一套驱动来进行对接。其中支持的虚拟机软件有VirtualBox、VMware Fusion和Hyper-V,涵盖了Linux、OS X和Windows三大平台。使用Machine之前,机器上需装有上述三种软件之一,在命令中指明使用的是哪一种,命令形式如下。

    docker-machine create-d virtualbox dev
    
    • 1

    该命令中的-d参数指明了驱动模块,create命令默认行为是下载最新的boot2docker系统镜像,基于该镜像创建内存大小为1G,硬盘大小为20G,名为dev的VirtualBox虚拟机。使用VMware Fusion和Hyper-V的过程与之类似,这一点上,Machine确实能够在一定程度上减轻用户手动创建虚拟机的负担。但仅仅只有创建功能的话,Machine就显得有些鸡肋。Machine还提供了对虚拟机的管理,用户不再需要打开一个个虚拟机软件就可以控制所有虚拟机状态,获取到Docker客户端连接宿主机时所需信息。例如使用docker-machine ls命令就可以查看所有通过Machine管理的虚拟机,其中ACTIVE项指明Machine的start、stop、ip和ssh等命令在不带参数时的默认目标宿主机。

    Machine与IaaS平台

    “Machine利用虚拟机软件在本地创建一台虚拟机”听上去并不是一件能让人激动的事,毕竟本地进行手动操作也不是很费力。Machine激动人心的地方在于它为很多IaaS平台开发了一套驱动来进行一系列轻量级的操作。

    作为开源软件,Machine充分发挥了开源社区的力量,当下IaaS平台五花八门,IaaS平台目的主要是为用户提供资源,如何与Machine接驳是件费时费力的事。不少非Docker开发者利用本身对某个IaaS平台的熟悉,积极地贡献了相应Machine驱动的代码。为了鼓励更多开发者来给Machine的驱动模块添砖加瓦,Docker制定了初步的驱动开发准则,这些开发准则同样适用于针对虚拟机软件开发驱动。IaaS平台的Machine驱动与为虚拟机写的驱动功能基本相同,用户需要提供相应平台的认证信息。以Amazon EC2为例,用户需要提供访问AWS API的访问密钥ID、私有访问密钥以及VPC ID。用户需要在使用create命令时提供这些参数,不同的Machine驱动有不同的认证方式,用户可以使用如下命令来查看所有参数。

    IaaS平台的Machine驱动与为虚拟机写的驱动功能基本相同,用户需要提供相应平台的认证信息。以Amazon EC2为例,用户需要提供访问AWS API的访问密钥ID、私有访问密钥以及VPC ID。用户需要在使用create命令时提供这些参数,不同的Machine驱动有不同的认证方式,用户可以使用如下命令来查看所有参数。

    其他如create、start、stop、config、env等命令的使用。Docker服务端需要被Docker客户端远程连接,所以Docker服务端都应该提供对外的TCP连接,用户可以使用url命令选项来查看宿主机的连接信息。

    achine在2016年4月发布的v0.6.0版中支持的IaaS平台已经达到15种,其中包括主流服务提供商Amazon、Google、Microsoft三巨头的Amazon EC2、GCE和Azure,也有开源的OpenStack。与此同时,有一部分开源社区开发者开发了第三方的驱动插件,如今已达到20余种,其中包括国内的UCloud、Aliyun ECS。如果用户想要替一个私有云平台和Machine牵线搭桥该如何操作?Machine的开发工作大半放在了驱动的开发上,所以应该设计了一套API规范[插图]用以确定该驱动提供的功能,同时应确定目标云平台需要符合的规范。

    Machine的开发工作大半放在了驱动的开发上,所以应该设计了一套API规范[插图]用以确定该驱动提供的功能,同时应确定目标云平台需要符合的规范。实现一个驱动需要的基本功能有以下几个。
    ❏ Create功能:create命令作为创建机器实例的基本命令,除了分配资源创建机器外,还需要配置好该机器的SSH以保证可以连接。
    ❏ Remove功能:remove命令将会从平台上完全移除机器实例,包括机器实例在平台上的相关配置信息。
    ❏ Start、Stop、Kill和Restart功能:这4个命令用来对机器实例的状态进行操作,start和restart命令执行完成要保证机器可以进行SSH和Docker服务端工作正常。stop命令将会暂停机器,kill命令会直接强制关闭机器。
    ❏ Status功能:status命令将会返回机器当前的运行状态。

    Machine小结

    Machine处于辅助Docker客户端的定位,它能提供对宿主机的管理都是轻量级操作。它将所有宿主机资源,不管是来自本地还是来自云平台,都放到了一个资源池中供用户使用。用户的操作目标只需要关注Docker本身,尽可能少地在消除不同平台差异上消耗精力。在下一节介绍Swarm时,读者会发现Swarm同样为了资源统一做了努力,不同的是,Swarm的工作针对了Docker服务端资源。

    在这里插入图片描述
    在当下Machine发展的初期,要在不同云平台和虚拟机管理器上为用户提供一个统一的接口并非易事,鉴于各IaaS提供商用户认证方式和API的巨大差异,开发人员只能千方百计地为不同的Docker创建方案开发一个相应的驱动模块,主动地消除提供商差异。也许在有大量Machine用户之后,IaaS平台提供商会考虑使用Machine提供的一致化接口。若是有了“挟天子以令诸侯”的标准制定者优势,Docker公司在未来亦有提供云平台服务的战略部署,只要在Machine中添加进自身云平台接入信息,Machine便会成为一个很好的宣传入口,瞬间自身云平台有了与其他厂商同台竞技的机会。

  • 相关阅读:
    VOC和COCO数据集讲解
    大学生个人网页模板 简单网页制作作业成品 极简风格个人介绍HTML网页设计(舞蹈培训网页)
    TS内容学习总结
    8月23日
    head first java 读书笔记 2
    基于SpringBoot的甘肃非物质文化网站设计与实现
    JAVA面试题
    Python异常
    Linux配置java,maven,marshalsec环境
    Mac cocoapods 3分钟安装教程( 国内镜像源方法)
  • 原文地址:https://blog.csdn.net/yitian881112/article/details/126329184