当前位置:云计算技术专区 → 正文

Docker集群管理之Docker Machine

责任编辑:editor006 作者:杜航 |来源:企业网D1Net  2015-08-12 15:53:49 本文摘自:CSDN

导语:以Docker为代表的容器技术正在成为应用交付运维的全新标准,围绕其周围的整个生态圈也在发生着天翻地覆的改变,我们可以期待以其为代表的新一轮云技术革命的到来。 CaaS(Container as a Service)技术是为了解决Docker容器的最佳应用场景 – 云端而生,如何在云端管理部署Docker容器便成为CaaS技术的核心所在。

应用软件的部署方式主要可以分为部署在用户环境的主机上(On-Premise),部署在云端(SaaS)以及两者混合模式(Hybird)。部署在云端的软件又可根据软件可访问的范围分为公有云部署,私有云部署以及其两者的混合模式。如何在以上各种环境中创建Docker主机便成为DevOps关注的一个问题。Docker Machine的产生简化了这一过程,让你可以使用一条命令在你的计算机,公有云平台以及私有数据中心创建及管理Docker主机。

在Docker Machine发布之前,你可能会遇到以下问题:

你需要登录主机,按照主机及操作系统特有的安装以及配置步骤安装Docker,使其能运行Docker容器。

你需要研发一套工具管理多个Docker主机并监控其状态。

你在本地开发,产品部署在公有云平台,你希望能尽可能的减小两个环境的差异性

Docker Machine的出现解决了以上问题。

Docker Machine简化了部署的复杂度,无论是在本机的虚拟机上还是在公有云平台,只需要一条命令便可搭建好Docker主机

Docker Machine提供了多平台多Docker主机的集中管理

Docker Machine 使应用由本地迁移到云端变得简单,只需要修改一下环境变量即可和任意Docker主机通信部署应用。

综合来说Docker Machine让下图这种开发模式得到了大大的简化。

  Docker Machine的安装

可以通过下载二进制可执行文件的方式安装Docker Machine,本文以Linux系统为例。

  Docker Machine的运行原理

本文通过两个例子讲述了Docker Machine的工作原理及工作流程:在本机安装Virtualbox虚拟机作为Docker主机,以及在AWS创建Docker主机。

create命令用来创建docker主机,运行create命令需要指明驱动的名称,目前支持在本机运行virtualbox虚拟主机,Hyper-V虚拟主机,VMware虚拟主机,AWS EC2,Azure,DigitalOcean,Google等公有云主机,以及使用Openstack搭建的私有数据中心。

新的虚拟化(Xen,KVM)支持以及新的云平台支持可以通过开发驱动的方式支持。

在本机安装Virtualbox虚拟机作为Docker主机

Create Docker Machine主要包括三个Create过程。首先是Provider Create(libmachine/provider.go),此函数主要是在当前运行docker-machine命令主机上创建以machine name命名的文件夹,并将根证书,服务器证书以及用户证书拷贝到此文件夹。其次是driver create(例如drivers/virtualbox/virtualbox.go)用来创建主机,最后是运行host create(libmachine/host.go)通过SSH安装并配置Docker。目前在本地环境中使用的是boot2docker镜像,云端环境使用的是Ubuntu镜像。

运行在Virtualbox虚拟主机上的docker machine创建过程如下。

1. Docker Machine首先生成一个自签名的Root CA,然后用这个Root CA签发客户端证书,此证书在Docker客户端连接远程Docker服务器的时候做认证使用;

2. 配置Docker主机的运行参数,参数包括Docker客户端与远程Docker服务器之间认证参数,远程Docker daemon的运行参数以及Docker Swarm的参数。

3. Docker Machine使用boot2docker作为virtualbox的镜像 – boot2docker是一个运行Docker容器的轻量级Linux系统,完全在内存中运行。

4. 创建virtualbox虚拟机

a. 生成ssh key – 部署过程中使用次ssh key认证实现远程操作

b. 创建一个VMDK文件作为虚拟机的hdd,大小可以在运行时指定参数–virtualbox-disk-size控制

  c. 创建虚拟机

修改虚拟机参数,可通过参数–virtualbox-memory和–virtualbox-cpu-count控制内存大小和CPU个数。

d. 配置虚拟机网络 – NIC1为NAT形式使虚拟机能够访问外网,NIC2为hostonly模式用于内部通信,子网可以通过参数–virtualbox-hostonly-cidr修改

e. 配置存储 – 将boot2docker iso文件挂载在虚拟dvd光驱,步骤b中创建的文件作为hdd

5. 启动虚拟机,并设置端口映射,将本地随机端口转发到虚拟机22端口(此时还不知道虚拟机Hostonly网卡的IP地址,所以只能通过NAT网卡进行端口映射的方法访问虚拟机)

6. 使用默认用户名docker,默认密码docker登录虚拟机将第一步生成的ssh key导入到虚拟机/home/docker/.ssh/authorized_keys。获取hostonly网卡的IP地址(通过DHCP获得)

7. 部署虚拟机的Docker运行环境(所有命令都是通过SSH远程执行)

a. 配置虚拟机hostname

b. 安装Docker

c. 配置docker daemon使用TLS –tlsverify。使用此选项之后docker daemon只接受来自第1步中自签名的根证书签发的证书,docker客户端只相信第1步中自签名的更证书签发的服务器证书

d. 签发服务器证书

自此为止一个基于virtualbox的Docker运行环境就创建好了,使用者需要将本地的docker客户端配置到远程的docker daemon。

Docker Machine的其他命令都是通过drivers/virtualbox/virtualbox.go驱动实现的,在此就不累述了。

在AWS创建Docker主机

Docker Machine通过AWS REST API创建一个Docker主机所需要的资源,需要使用AWS访问密钥(–amazonec2-access-key)和AWS密钥(–amazonec2-secret-key)进行认证。所创建的EC2主机需要在一个提前创建好的VPC(–amazonec2-vpc-id)里面。

检查环境 – 是否已经存在重名的密钥对,检查指定区域(–amazonec2-zone)的指定VPC中是否存在子网,使用默认的子网

创建密钥对并通过AWS REST API上传到AWS服务器

创建一个安全组允许访问22(SSH),2376(Docker)或3376(指定Swarm),可通过–amazonec2-security-group指定名称

创建一个块设备

运行EC2实例 – 指定AMI,区域,安全组,子网等参数

部署虚拟机的Docker运行环境 -使用默认用户ubuntu以及之前生成的密钥SSH到AWS EC2实例进行远程操作

a. 配置虚拟机hostname

b. 安装Docker

c. 配置docker daemon使用TLS –tlsverify。使用此选项之后docker daemon只接受来自第1步中自签名的根证书签发的证书,docker客户端只相信第1步中自签名的更证书签发的服务器证

d. 签发服务器证书

至此一个运行在AWS公有云上的Docker主机就创建成功了。Docker Machine的其他命令也是在drivers/amazonec2/amazonec2.go中实现的关于Docker Machine与Docker Swarm的集成,将在之后Docker Swarm的章节中介绍。

结语:

本文通过两个典型实例分析力Docker Machine在本地虚拟环境的工作流程以及在远程公有云平台的工作流程。通过以上步骤更能说明Docker Machine为开发者带来的一步式部署,免去了烦琐的虚拟机搭建以及公有云IaaS的配置,使开发者能专注于应用开发。Docker Machine目前还处在初级阶段,在其Roadmap我们可以看到包括Mac/Windows支持,多种发行版支持,更广泛的支持Docker engine以及Swarm的配置,我们有理由期待Docker Machine成为一个更加通用的Docker主机部署管理工具。

关键字:DockerMachineiso文件

本文摘自:CSDN

x Docker集群管理之Docker Machine 扫一扫
分享本文到朋友圈
当前位置:云计算技术专区 → 正文

Docker集群管理之Docker Machine

责任编辑:editor006 作者:杜航 |来源:企业网D1Net  2015-08-12 15:53:49 本文摘自:CSDN

导语:以Docker为代表的容器技术正在成为应用交付运维的全新标准,围绕其周围的整个生态圈也在发生着天翻地覆的改变,我们可以期待以其为代表的新一轮云技术革命的到来。 CaaS(Container as a Service)技术是为了解决Docker容器的最佳应用场景 – 云端而生,如何在云端管理部署Docker容器便成为CaaS技术的核心所在。

应用软件的部署方式主要可以分为部署在用户环境的主机上(On-Premise),部署在云端(SaaS)以及两者混合模式(Hybird)。部署在云端的软件又可根据软件可访问的范围分为公有云部署,私有云部署以及其两者的混合模式。如何在以上各种环境中创建Docker主机便成为DevOps关注的一个问题。Docker Machine的产生简化了这一过程,让你可以使用一条命令在你的计算机,公有云平台以及私有数据中心创建及管理Docker主机。

在Docker Machine发布之前,你可能会遇到以下问题:

你需要登录主机,按照主机及操作系统特有的安装以及配置步骤安装Docker,使其能运行Docker容器。

你需要研发一套工具管理多个Docker主机并监控其状态。

你在本地开发,产品部署在公有云平台,你希望能尽可能的减小两个环境的差异性

Docker Machine的出现解决了以上问题。

Docker Machine简化了部署的复杂度,无论是在本机的虚拟机上还是在公有云平台,只需要一条命令便可搭建好Docker主机

Docker Machine提供了多平台多Docker主机的集中管理

Docker Machine 使应用由本地迁移到云端变得简单,只需要修改一下环境变量即可和任意Docker主机通信部署应用。

综合来说Docker Machine让下图这种开发模式得到了大大的简化。

  Docker Machine的安装

可以通过下载二进制可执行文件的方式安装Docker Machine,本文以Linux系统为例。

  Docker Machine的运行原理

本文通过两个例子讲述了Docker Machine的工作原理及工作流程:在本机安装Virtualbox虚拟机作为Docker主机,以及在AWS创建Docker主机。

create命令用来创建docker主机,运行create命令需要指明驱动的名称,目前支持在本机运行virtualbox虚拟主机,Hyper-V虚拟主机,VMware虚拟主机,AWS EC2,Azure,DigitalOcean,Google等公有云主机,以及使用Openstack搭建的私有数据中心。

新的虚拟化(Xen,KVM)支持以及新的云平台支持可以通过开发驱动的方式支持。

在本机安装Virtualbox虚拟机作为Docker主机

Create Docker Machine主要包括三个Create过程。首先是Provider Create(libmachine/provider.go),此函数主要是在当前运行docker-machine命令主机上创建以machine name命名的文件夹,并将根证书,服务器证书以及用户证书拷贝到此文件夹。其次是driver create(例如drivers/virtualbox/virtualbox.go)用来创建主机,最后是运行host create(libmachine/host.go)通过SSH安装并配置Docker。目前在本地环境中使用的是boot2docker镜像,云端环境使用的是Ubuntu镜像。

运行在Virtualbox虚拟主机上的docker machine创建过程如下。

1. Docker Machine首先生成一个自签名的Root CA,然后用这个Root CA签发客户端证书,此证书在Docker客户端连接远程Docker服务器的时候做认证使用;

2. 配置Docker主机的运行参数,参数包括Docker客户端与远程Docker服务器之间认证参数,远程Docker daemon的运行参数以及Docker Swarm的参数。

3. Docker Machine使用boot2docker作为virtualbox的镜像 – boot2docker是一个运行Docker容器的轻量级Linux系统,完全在内存中运行。

4. 创建virtualbox虚拟机

a. 生成ssh key – 部署过程中使用次ssh key认证实现远程操作

b. 创建一个VMDK文件作为虚拟机的hdd,大小可以在运行时指定参数–virtualbox-disk-size控制

  c. 创建虚拟机

修改虚拟机参数,可通过参数–virtualbox-memory和–virtualbox-cpu-count控制内存大小和CPU个数。

d. 配置虚拟机网络 – NIC1为NAT形式使虚拟机能够访问外网,NIC2为hostonly模式用于内部通信,子网可以通过参数–virtualbox-hostonly-cidr修改

e. 配置存储 – 将boot2docker iso文件挂载在虚拟dvd光驱,步骤b中创建的文件作为hdd

5. 启动虚拟机,并设置端口映射,将本地随机端口转发到虚拟机22端口(此时还不知道虚拟机Hostonly网卡的IP地址,所以只能通过NAT网卡进行端口映射的方法访问虚拟机)

6. 使用默认用户名docker,默认密码docker登录虚拟机将第一步生成的ssh key导入到虚拟机/home/docker/.ssh/authorized_keys。获取hostonly网卡的IP地址(通过DHCP获得)

7. 部署虚拟机的Docker运行环境(所有命令都是通过SSH远程执行)

a. 配置虚拟机hostname

b. 安装Docker

c. 配置docker daemon使用TLS –tlsverify。使用此选项之后docker daemon只接受来自第1步中自签名的根证书签发的证书,docker客户端只相信第1步中自签名的更证书签发的服务器证书

d. 签发服务器证书

自此为止一个基于virtualbox的Docker运行环境就创建好了,使用者需要将本地的docker客户端配置到远程的docker daemon。

Docker Machine的其他命令都是通过drivers/virtualbox/virtualbox.go驱动实现的,在此就不累述了。

在AWS创建Docker主机

Docker Machine通过AWS REST API创建一个Docker主机所需要的资源,需要使用AWS访问密钥(–amazonec2-access-key)和AWS密钥(–amazonec2-secret-key)进行认证。所创建的EC2主机需要在一个提前创建好的VPC(–amazonec2-vpc-id)里面。

检查环境 – 是否已经存在重名的密钥对,检查指定区域(–amazonec2-zone)的指定VPC中是否存在子网,使用默认的子网

创建密钥对并通过AWS REST API上传到AWS服务器

创建一个安全组允许访问22(SSH),2376(Docker)或3376(指定Swarm),可通过–amazonec2-security-group指定名称

创建一个块设备

运行EC2实例 – 指定AMI,区域,安全组,子网等参数

部署虚拟机的Docker运行环境 -使用默认用户ubuntu以及之前生成的密钥SSH到AWS EC2实例进行远程操作

a. 配置虚拟机hostname

b. 安装Docker

c. 配置docker daemon使用TLS –tlsverify。使用此选项之后docker daemon只接受来自第1步中自签名的根证书签发的证书,docker客户端只相信第1步中自签名的更证书签发的服务器证

d. 签发服务器证书

至此一个运行在AWS公有云上的Docker主机就创建成功了。Docker Machine的其他命令也是在drivers/amazonec2/amazonec2.go中实现的关于Docker Machine与Docker Swarm的集成,将在之后Docker Swarm的章节中介绍。

结语:

本文通过两个典型实例分析力Docker Machine在本地虚拟环境的工作流程以及在远程公有云平台的工作流程。通过以上步骤更能说明Docker Machine为开发者带来的一步式部署,免去了烦琐的虚拟机搭建以及公有云IaaS的配置,使开发者能专注于应用开发。Docker Machine目前还处在初级阶段,在其Roadmap我们可以看到包括Mac/Windows支持,多种发行版支持,更广泛的支持Docker engine以及Swarm的配置,我们有理由期待Docker Machine成为一个更加通用的Docker主机部署管理工具。

关键字:DockerMachineiso文件

本文摘自:CSDN

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^