如何在云服务提供商的云平台提供商上使用Docker Machine

原先,我们使用Boot2Docker在OSX下管理Docker。在Docker发布了 Toolbox 之后,新增了 Docker Machine 命令行。通过 docker-machine ,可以让我们以一致化的命令在本地或者云计算上创建 docker 服务。同时很方便的切换 docker 命令对应的目标服务器。
一、安装 Docker Toolbox
Docker Toolbox 安装包包含了:
docker 客户端
docker-machine 工具
docker-compose 工具
Kitematic 一个Docker的GUI
我们可以在
下载并安装。
二、将Boot2Docker迁移到Docker Machine
如果原先并没有使用Boot2Docker,可以直接忽略
使用命令:
docker-machine create -d virtualbox –virtualbox-import-boot2docker-vm boot2docker-vm dev
-d virtualbox
使用virtualbox驱动
–virtualbox-import-boot2docker-vm boot2docker-vm
导入virtualbox中boot2docker的vm boot2docker原先在virtualbox创建的虚拟机名字为 boot2docker-vm
可以根据自己需要设置 docker-machine 中的机器名
三、Docker Machine 使用
1. 创建一台新的 Docker Machine
docker-machine create –driver virtualbox default
–driver virtualbox
本机使用的话 使用virtualbox驱动
driver 还可以是amazonec2, azure, digitalocean, exoscale, generic, google, openstack, rackspace, softlayer, virtualbox, vmwarefusion, vmwarevcloudair, vmwarevsphere 等 配置对应的秘钥和参数后 可以直接在云服务中创建设备
docker-machine 中的机器名 之后的管理命令均使用该名称
2. 设置环境变量
在创建好 Docker Machine 之后,需要让本地的 docker 客户端了解需要连接的 docker 目标服务器地址,或者在不同的docker服务器之间切换,因此需要设置环境变量。
eval “$(docker-machine env default)”
–driver virtualbox
之前创建的machine的名称
3. 使用docker客户端管理docker
当我们将环境变量配置完成之后,我们就可以在本地操作docker一下,使用docker命令管理docker设备了
三、Docker Machine 管理
docker machine 提供了一系列命令来管理对应的docker设备
以下是 boot2docker 与 docker-machine 命令的对照表 使用 docker-machine 时 最后都需要跟上对应的设备名称
boot2docker
docker-machine
docker-machine description
创建新的docker主机
启动一个关闭的主机
通过ssh连接到对应的docker主机
关闭正在运行时的主机
关闭正在运行时的主机
重启正在运行的主机
获取主机的参数配置信息
列出所有主机及其状态
获取主机的参数配置信息
获取主机的IP地址
设置主机的环境变量
将主机的docker客户端更新到最新版本
2017年二月
2016年十一月
2016年十月
2016年七月
2016年一月
2015年十月
2015年九月
2015年八月
2015年七月
2015年二月
2015年一月
2014年十一月
2014年十月
2014年九月
2014年七月
2014年五月
2014年四月
2014年二月
2014年一月
2013年十一月
2013年九月
2013年八月
2013年七月
2013年五月
2013年一月
2012年十二月
2012年十一月
2012年十月
2012年九月
2012年八月
2012年七月
2012年六月
2012年五月
2012年四月
2012年二月
2012年一月
2011年十二月
2011年十一月
2011年十月
2011年九月
2011年八月
2011年七月
2011年六月
2011年五月
2011年四月
2011年三月
2011年二月
2011年一月
2010年十二月
2010年十一月
2010年十月
2010年九月
2010年八月
2010年七月
2010年六月
2010年五月
2010年四月
2010年三月
2010年二月
2010年一月
2009年十二月
2009年十一月
2009年十月
2009年九月
2009年八月
2009年七月
2009年六月
2009年五月
2009年四月
2009年三月
2009年二月
2009年一月
2008年十二月
2008年十月
2008年九月
2008年八月
2008年七月
2008年五月
2008年四月
2008年三月
2008年二月
2007年十一月
2007年十月
2007年九月
2007年八月
2007年七月
2007年六月企业如何真正使用Docker - Golang中国
16:42 发布 1981 次点击
企业喜欢Docker。在许多企业的2016战略规划上,Docker已成为科技创业公司和金融服务集团的宠儿,尽管Docker还非常“年轻”。
众所周知,企业不需要在“DevOps改造”到某个阶段才能开始使用Docker。他们不需要一个微服务模型或一批全栈工程师。事实上,Docker多年IT改造最合适的选择,实际上可以帮助大团队更快地实现DevOps最佳实践。
混合云是将近一半企业的目标,其中大部分都在采用DevOps工具链。企业招聘云顾问,整合数据中心,打破工程团队之间壁垒,新应用程序迁移到AWS或其他公共云。
精通混合云尽管混合云想象中有灵活性的好处,但是跨多个复杂系统管理安全性和可伸缩性不是一件轻而易举的事情。绝大多数企业的内部应用程序受困于内部依赖,网络并发症和巨大的本地数据库集群。把应用程序从一个云“无缝”的迁移到另一朵云是不可想象的。对于大多数企业来说,“云爆炸”是一个白日梦。
Docker填补了这个领域的空白。企业使用Docker的最大原因是帮助他们部署多系统,迁移应用程序以及消除手动配置工作。因为应用依赖关系构建到容器,Docker容器显著降低互操作性问题。Docker同样适用于裸金属服务器、虚拟机、AWS实例等等。
DevOps文化这是好消息,企业寻求推进DevOps文化转型。DevOps运动真的是进展迅速,而且消耗更少的资源。使开发人员能够提供Docker容器、运行测试,在几分钟内部署到生产系统,降低了成本,消除了开发者最大的敌人:手动系统配置工作。
Docker适合企业发展原因还在于它能够解决供应商锁定问题。容器标准化使它更容易跨越云提供商,由多个供应商操作。
Docker团队也正在推动企业级软件。收购SocketPlane六个月之后,Docker宣布重大升级,网络方面,允许容器跨主机进行通信。团队正致力于完成一组网络API,这将使Docker在整个生命周期实现网络企业级,保证应用程序的可移植性。
关注安全性然而,仍然有一些主要的障碍。企业在混合环境中正确地关心的是Docker安全。容器可能像虚拟化,但是他们有截然不同的系统隔离,日志聚合和监控。企业应用程序通常有严格的管理程序,需要广泛的日志和监控。很简单,没有成熟的编排工具实现跨多个Docker集群监控安全。大多数监控工具在市场上没有看到在公共云的transient instances,更不用说subvirtual machine entities。
在安全威胁下, Docker目前需要大量的手动安全补丁。Docker允许你更新你的base image,但开发人员必须手动确保base image在每个容器中运行。对于某些至关重要的企业应用程序,某种形式的image inheritance是必要的。
Docker很有可能是企业在面对混合云挑战过程中的真正答案。但是企业在选择Docker过程中需要仔细甄别。
作者简介:丁麒伟,时速云软件工程师全文见blog:www.
Mrexamo 于
14:12 修改
后方可回复, 如果你还没有账号你可以
一个帐号。用户名:xxh2580
文章数:627
评论数:43
访问量:57841
注册日期:
阅读量:1297
阅读量:3317
阅读量:428117
阅读量:1116124
51CTO推荐博文
什么是Docker MachineDocker Machine是一个简化安装Docker环境的工具。市场上主流Linux系统版本很多,使用Machine工具就简单很多,一两条命令即可在主流Linux系统上安装Docker环境,用户不用考虑什么操作系统。Docker Machine还具备Docker工具管理虚拟化技术,Generic驱动默认管理LXC容器技术。Docker Machine 支持多种后端驱动,包括虚拟机、本地主机和云平台等。Docker Machine目前支持的驱动:amazonec2azuredigitaloceanexoscalegenericgooglenoneopenstackrackspacesoftlayervirtualboxvmwarevcloudairvmwarevsphere安装Docker Machine可以在多种操作系统平台上安装,包括Linux、Mac OS以及 Windows。Linux/Mac OS在Linux/Mac OS 上的安装十分简单,推荐从官方Release库直接下载编译好的二进制文件即可。例如在Linux 64位系统上直接下载对应的二进制包$&curl&-L&/docker/machine/releases/download/v0.7.0/docker-machine-`uname&-s`-`uname&-m`&&/usr/local/bin/docker-machine&&&&chmod&+x&/usr/local/bin/docker-machineWindowsWindows下面要复杂一些,首先需要安装msysgit。msysgit是Windows下的git客户端软件包,会提供类似Linux下的一些基本的工具,例如ssh等。安装之后,启动msysgit的命令行界面,仍然通过下载二进制包进行安装.On Windows with git bash$&if&[[&!&-d&"$HOME/bin"&]];&then&mkdir&-p&"$HOME/bin";&fi&&&&\
curl&-L&/docker/machine/releases/download/v0.7.0/docker-machine-Windows-x86_64.exe&&&"$HOME/bin/docker-machine.exe"&&&&\
chmod&+x&"$HOME/bin/docker-machine.exe"完成后,查看版本信息,验证运行正常。$&docker-machine&-v
docker-machine&version&0.7.0,&build&a650a40docker-machine命令help &查看帮助信息active &查看活动的Docker主机config &输出连接的配置信息create &创建一个Docker主机env &显示连接到某个主机需要的环境变量inspect &输出主机更新信息ip &获取Docker主机地址kill &停止某个Docker主机ls &列出所有管理的Docker主机regenerate-certs &为某个主机重新成功TLS认证信息restart &重启Docker主机rm &删除Docker主机scp &在Docker主机之间复制文件ssh &SSH到主机上执行命令start &启动一个主机status &查看一个主机状态stop &停止一个主机upgrade &更新主机Docker版本为最新url &获取主机的URL每个命令又带有不同的参数,查看具体的用法可以通过$&docker-machine&&COMMAND&&-h使用创建Docker主机实例这里使用的Docker主机使用的是Ubuntu 14.04(docker-machine 0.7版本不支持CentOS7以下版本)docker-machine通过ssh免交互登录或指定私钥登录连接到Docker主机,从网上下载并安装docker工具,需要用root权限来安装。配置root权限如果用root用户在ubuntu系统下,默认禁止root用户登录系统,因此需要先配置root允许SSH登录系统允许root ssh登录(docker主机操作)#切换到root用户
$&sudo&-i&
#修改此项为允许root登录
$&sed&-i&-e&"s/PermitRootLogin&without-password/PermitRootLogin&yes/g"&/etc/ssh/sshd_config
$&service&ssh&restart
按提示设置root用户密码
$&passwd如果用具有sudo权限的普通用户以mike为例配置为免密码sudo$&vim&/etc/sudoers.d/nopasswdsudo&
mike&ALL=(ALL)&NOPASSWD&:&ALL注:Ubuntu 14.04下sudo免密码的方法略有不同,具体可参考:Ubuntu 14.04 sudo免密码的方法配置ssh免交互登录首先确保本地主机可以通过user账号的key直接ssh到目标主机。以root为例创建密钥对(machine主机操作)$&ssh-keygen&-t&rsa&&#一直回车
$&mv&id_rsa.pub&authorized_keys
$&chmod&600&authorized_keys免交互root登录系统(machine主机操作)$&ssh-copy-id&root@192.168.119.105&&#将公钥拷贝到docker主机
$&ssh&root@192.168.119.105&&&#如果不提示密码登录主机说明成功,可以继续下一步了启用visiblepwmachine主机操作$&visudo
Defaults&&&visiblepw如果不添加这个条,可能报下面的错:Error&creating&machine:&Error&running&provisioning:&Something&went&wrong&running&an&SSH&command!
command&:&sudo&hostname&ubuntu&&&&echo&"ubuntu"&|&sudo&tee&/etc/hostname
err&&&&&:&exit&status&1
output&&:&sudo:&no&tty&present&and&no&askpass&program&specified
Sorry,&try&again.
sudo:&no&tty&present&and&no&askpass&program&specified
Sorry,&try&again.
sudo:&no&tty&present&and&no&askpass&program&specified
Sorry,&try&again.
sudo:&3&incorrect&password&attempts使用generic类型的驱动创建Docker主机创建一台Docker主机,命名为docker-web。$&docker-machine&create&-d&generic&--generic-ip-address=192.168.119.105&--generic-ssh-user=mike&docker-ubuntu-web注意:Docker Machine安装docker环境中会因网络或其他情况造成安装失败(国内连官网速度很慢),可按下面的方法使用国内镜像源进行安装。Docker下如何使用国内镜像源可参考Docker下使用daocloud/阿里云镜像加速一文。使用daoclound镜像安装$&docker-machine&create&-d&generic&--generic-ip-address=192.168.119.105&--generic-ssh-user=mike&--engine-registry-mirror&http://xxxxxx.m.daocloud.io&&docker-ubuntu-web
Running&pre-create&checks...
Creating&machine...
(docker-ubuntu-web)&No&SSH&key&specified.&Connecting&to&this&machine&now&and&in&the&future&will&require&the&ssh&agent&to&contain&the&appropriate&key.
Waiting&for&machine&to&be&running,&this&may&take&a&few&minutes...
Detecting&operating&system&of&created&instance...
Waiting&for&SSH&to&be&available...
Detecting&the&provisioner...
Provisioning&with&ubuntu(upstart)...
Installing&Docker...
Copying&certs&to&the&local&machine&directory...
Copying&certs&to&the&remote&machine...
Setting&Docker&configuration&on&the&remote&daemon...
Checking&connection&to&Docker...
Docker&is&up&and&running!
To&see&how&to&connect&your&Docker&Client&to&the&Docker&Engine&running&on&this&virtual&machine,&run:&docker-machine&env&docker-ubuntu-web参数说明-d&&driver&&#指定基于什么虚拟化技术的驱动
--generic-ip-address&&#指定要安装宿主机的IP,前提是SSH&root用户免交互登录或私钥认证。
--generic-ssh-user&&&#SSH的用户等待数分钟后,docker就安装成功了,可以通过docker命令管理容器了。如果安装失败多尝试两次!$&docker-machine&ls
NAME&&&&&&&&&&&&&&&&ACTIVE&&&DRIVER&&&&STATE&&&&&URL&&&&&&&&&&&&&&&&&&&&&&&&&&SWARM&&&DOCKER&&&&ERRORS
docker-ubuntu-web&&&-&&&&&&&&generic&&&Running&&&tcp://192.168.119.105:2376&&&&&&&&&&&v1.11.0创建主机成功后,可以通过env命令来让后续操作对象都是目标主机。$&docker-machine&env&docker-ubuntu-webSSH到docker主机$&docker-machine&ssh&&docker-ubuntu-web在不使用驱动的情况新增一个主机我们可以在不使用驱动的情况往Docker增加一台主机,只需要一个URL。它可以使用一个已有机器的别名,所以我们就不需要每次在运行docker命令时输入完整的URL了。$&docker-machine&create&-d&none&--url=tcp://192.168.119.105:2376&docker-ubuntu-web
$&docker-machine&regenerate-certs&docker-ubuntu-web注:进行证书注册时会出现http://www.dockone.io/question/920类似错误,造成注册失败并不能正常管理docker主机,此问题暂未解决,如有知道如何解决的大神求留言。在Docker Machine中使用Mirror服务使用daoclound镜像安装新建时通过指定--engine-registry-mirror参数$&docker-machine&create&-d&generic&--generic-ip-address=192.168.119.105&--generic-ssh-user=mike&--engine-registry-mirror&http://xxxxxx.m.daocloud.io&&docker-ubuntu-web修改已存在docker主机以主机名为docker-ubuntu-web的为例修改~/.docker/machine/machines/docker-ubuntu-web/config.json文件,编辑RegistryMirror字段,插入你的镜像地址,然后再重启你就会在/var/lib/boot2docker/profile看见一个--registry-mirror http://xxxxxx.m.daocloud.io了。$&vim&&~/.docker/machine/machines/docker-ubuntu-web/config.json
"RegistryMirror":&[
&&&&"http://xxxxxx.m.daocloud.io"
了这篇文章
类别:┆阅读(0)┆评论(0)如何在云服务提供商的平台上使用Docker Machine - 推酷
如何在云服务提供商的平台上使用Docker Machine
大家好,今天我们来了解如何使用Docker Machine在各种云服务提供商的平台上部署Docker。Docker Machine是一个可以帮助我们在自己的电脑、云服务提供商的平台以及我们数据中心的机器上创建Docker机器的应用程序。它为创建服务器、在服务器中安装Docker、根据用户需求配置Docker客户端提供了简单的解决方案。驱动API对本地机器、数据中心的虚拟机或者公用云机器都适用。Docker Machine支持Windows、OSX和Linux,并且提供一个独立的二进制文件,可以直接使用。它让我们可以充分利用支持Docker的基础设施的生态环境合作伙伴,并且使用相同的接口进行访问。它让人们可以使用一个命令来简单而迅速地在不同的云平台部署Docker容器。
1. 安装Docker Machine
Docker Machine可以很好地支持每一种Linux发行版。首先,我们需要从Github网站下载最新版本的。这里我们使用curl来下载目前最新0.2.0版本的Docker Machine。
在64位操作系统运行:
# curl -L /docker/machine/releases/download/v0.2.0/docker-machine_linux-amd64 & /usr/local/bin/docker-machine
在32位操作系统运行:
# curl -L /docker/machine/releases/download/v0.2.0/docker-machine_linux-i386 & /usr/local/bin/docker-machine
下载最新版本的Docker Machine并将docker-machine文件放到了/usr/local/bin/后,添加执行权限:
# chmod +x /usr/local/bin/docker-machine
完成如上操作后,我们需要确认已经成功安装docker-machine了。可以运行如下命令检查,它会输出系统中docker-machine的版本:
# docker-machine -v
要在我们的机器上启用docker命令,需要使用如下命令安装Docker客户端:
# curl -L /builds/linux/x86_64/docker-latest & /usr/local/bin/docker
# chmod +x /usr/local/bin/docker
2. 创建机器
在自己的Linux机器上安装好了Docker Machine之后,我们想要将一个docker虚拟机部署到云服务器上。Docker Machine支持几个流行的云平台,如igital Ocean、Amazon Web Services(AWS)、Microsoft Azure、Google Cloud Computing及其它等等,所以我们可以在不同的平台使用相同的接口来部署Docker。本文中我们会使用digitalocean驱动在Digital Ocean的服务器上部署Docker,--driver选项指定digitalocean驱动,--digitalocean-access-token选项指定
提供的API Token,命令最后的是我们创建的Docker虚拟机的机器名。运行如下命令:
# docker-machine create --driver digitalocean --digitalocean-access-token &API-Token& linux-dev
# eval &$(docker-machine env linux-dev)&
注意: 这里linux-dev是我们将要创建的机器的名称。 &API-Token& 是一个安全key,可以在Digtal Ocean Control Panel生成。要找到这个key,我们只需要登录到我们的Digital Ocean Control Panel,然后点击API,再点击 Generate New Token,填写一个名称,选上Read和Write。然后我们就会得到一串十六进制的key,那就是 &API-Token& ,简单地替换到上边的命令中即可。
运行如上命令后,我们可以在Digital Ocean Droplet Panel中看到一个具有默认配置的droplet已经被创建出来了。
简便起见,docker-machine会使用默认配置来部署Droplet。我们可以通过增加选项来定制我们的Droplet。这里是一些digitalocean相关的选项,我们可以使用它们来覆盖Docker Machine所使用的默认配置。
--digitalocean-image &ubuntu-14-04-x64& 用于选择Droplet的镜像
--digitalocean-ipv6 enable 启用IPv6网络支持
--digitalocean-private-networking enable 启用专用网络
--digitalocean-region &nyc3& 选择部署Droplet的区域
--digitalocean-size &512mb& 选择内存大小和部署的类型
如果你想在其他云服务使用docker-machine,并且想覆盖默认的配置,可以运行如下命令来获取Docker Mackine默认支持的对每种平台适用的参数。
# docker-machine create -h
3. 选择活跃主机
部署Droplet后,我们想马上运行一个Docker容器,但在那之前,我们需要检查下活跃主机是否是我们需要的机器。可以运行如下命令查看。
# docker-machine ls
ACTIVE一列有“*”标记的是活跃主机。
现在,如果我们想将活跃主机切换到需要的主机,运行如下命令:
# docker-machine active linux-dev
注意:这里,linux-dev是机器名,我们打算激活这个机器,并且在其上运行Docker容器。
4. 运行一个Docker容器
现在,我们已经选择了活跃主机,就可以运行Docker容器了。可以测试一下,运行一个busybox容器来执行 echo hello word 命令,这样就可以得到输出:
# docker run busybox echo hello world
注意:如果你试图在一个装有32位操作系统的宿主机部署Docker容器,使用SSH来运行docker是个好办法。这样你就可以简单跳过这一步,直接进入下一步。
5. SSH到Docker机器中
如果我们想在机器或者Droplet上控制之前部署的Docker机器,可以使用docker-machine ssh命令来SSH到机器上:
# docker-machine ssh
SSH到机器上之后,我们可以在上边运行任何Docker容器。这里我们运行一个nginx:
# docker run -itd -p 80:80 nginx
操作完毕后,我们需要运行exit命令来退出Droplet或者服务器。
5. 删除主机
删除在运行的主机以及它的所有镜像和容器,我们可以使用docker-machine rm命令:
# docker-machine rm linux-dev
使用docker-machine ls命令检查是否成功删除了:
# docker-machine ls
6. 在不使用驱动的情况新增一个主机
我们可以在不使用驱动的情况往Docker增加一台主机,只需要一个URL。它可以使用一个已有机器的别名,所以我们就不需要每次在运行docker命令时输入完整的URL了。
$ docker-machine create --url=tcp://104.131.50.36:2376 custombox
7. 管理主机
如果你已经让Docker运行起来了,可以使用简单的 docker-machine stop 命令来停止所有正在运行的主机,如果需要再启动的话可以运行 docker-machine start :
# docker-machine stop
# docker-machine start
你也可以使用如下命令来使用机器名作为参数来将其停止或启动:
$ docker-machine stop linux-dev
$ docker-machine start linux-dev
Docker Machine是一个非常棒的工具,可以使用Docker容器快速地部署服务。文中我们使用Digital Ocean Platform作演示,但Docker Machine还支持其他平台,如Amazon Web Service、Google Cloud Computing。使用Docker Machine,快速、安全地在几种不同平台部署Docker容器变得很简单了。因为Docker Machine还是Beta版本,不建议在生产环境使用。如果你有任何问题、建议、反馈,请在下方的评论框中写下来,我们会改进或者更新我们的内容。谢谢!享受吧 :-)
原创翻译,Linux中国 荣誉推出
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致}

我要回帖

更多关于 云服务提供商 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信