大家好，今天我们学习在 VirtualBox 中使用 Docker Machine 来创建和管理 Docker 主机。Docker Machine 是一个可以帮助我们在电脑上、在云端、在数据中心内创建 Docker 主机的应用。它为根据用户的配置和需求创建服务器并在其上安装 Docker和客户端提供了一个轻松的解决方案。这个 API 可以用于在本地主机、或数据中心的虚拟机、或云端的实例提供 Docker 服务。Docker Machine 支持 Windows、OSX 和 Linux，并且是以一个独立的二进制文件包形式安装的。仍然使用（与现有 Docker 工具）相同的接口，我们就可以充分利用已经提供 Docker 基础框架的生态系统。只要一个命令，用户就能快速部署 Docker 容器。本文列出一些简单的步骤用 Docker Machine 来部署 docker 容器。1. 安装 Docker MachineDocker Machine 完美支持所有 Linux 操作系统。首先我们需要从 github 下载最新版本的 Docker Machine，本文使用 curl 作为下载工具，Docker Machine 版本为 0.2.0。64 位操作系统# curl -L https://github.com/docker/machine/releases/download/v0.2.0/docker-machine_linux-amd64 > /usr/local/bin/docker-machine 32 位操作系统# curl -L https://github.com/docker/machine/releases/download/v0.2.0/docker-machine_linux-i386 > /usr/local/bin/docker-machine 下载完成后，找到 /usr/local/bin 目录下的 docker-machine 文件，让其可以执行：# chmod +x /usr/local/bin/docker-machine 确认是否成功安装了 docker-machine，可以运行下面的命令，它会打印 Docker Machine 的版本信息：# docker-machine -v 运行下面的命令，安装 Docker 客户端，以便于在我们自己的电脑止运行 Docker 命令：# curl -L https://get.docker.com/builds/linux/x86_64/docker-latest > /usr/local/bin/docker # chmod +x /usr/local/bin/docker 2. 创建 VirtualBox 虚拟机在 Linux 系统上安装完 Docker Machine 后，接下来我们可以安装 VirtualBox 虚拟机，运行下面的就可以了。--driver virtualbox 选项表示我们要在 VirtualBox 的虚拟机里面部署 docker，最后的参数“linux” 是虚拟机的名称。这个命令会下载 boot2docker iso，它是个基于 Tiny Core Linux 的轻量级发行版，自带 Docker 程序，然后 docker-machine 命令会创建一个 VirtualBox 虚拟机（LCTT译注：当然，我们也可以选择其他的虚拟机软件）来运行这个 boot2docker 系统。# docker-machine create --driver virtualbox linux 测试下有没有成功运行 VirtualBox 和 Docker，运行命令：# docker-machine ls 如果执行成功，我们可以看到在 ACTIVE 那列下面会出现一个星号“*”。3. 设置环境变量现在我们需要让 docker 与 docker-machine 通信，运行 docker-machine env <虚拟机名称> 来实现这个目的。# eval "$(docker-machine env linux)" # docker ps 这个命令会设置 TLS 认证的环境变量，每次重启机器或者重新打开一个会话都需要执行一下这个命令，我们可以看到它的输出内容：# docker-machine env linux export DOCKER_TLS_VERIFY=1 export DOCKER_CERT_PATH=/Users/<your username>/.docker/machine/machines/dev export DOCKER_HOST=tcp://192.168.99.100:2376 4. 运行 Docker 容器完成配置后我们就可以在 VirtualBox 上运行 docker 容器了。测试一下，我们可以运行虚拟机 docker run busybox ，并在里面里执行 echo hello world 命令，我们可以看到容器的输出信息。# docker run busybox echo hello world 5. 拿到 Docker 主机的 IP我们可以执行下面的命令获取运行 Docker 的主机的 IP 地址。我们可以看到在 Docker 主机的 IP 地址上的任何暴露出来的端口。# docker-machine ip 6. 管理主机现在我们可以随心所欲地使用上述的 docker-machine 命令来不断创建主机了。当你使用完 docker 时，可以运行 docker-machine stop 来停止所有主机，如果想开启所有主机，运行 docker-machine start。# docker-machine stop # docker-machine start 你也可以只停止或开启一台主机：$ docker-machine stop linux $ docker-machine start linux 总结最后，我们使用 Docker Machine 成功在 VirtualBox 上创建并管理一台 Docker 主机。Docker Machine 确实能让用户快速地在不同的平台上部署 Docker 主机，就像我们这里部署在 VirtualBox 上一样。这个 virtualbox 驱动可以在本地机器上使用，也可以在数据中心的虚拟机上使用。Docker Machine 驱动除了支持本地的 VirtualBox 之外，还支持远端的 Digital Ocean、AWS、Azure、VMware 以及其它基础设施。如果你有任何疑问，或者建议，请在评论栏中写出来，我们会不断改进我们的内容。谢谢，祝愉快。via: http://linoxide.com/linux-how-to/host-virtualbox-docker-machine/作者：Arun Pyasi 译者：bazz2 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
大家好，今天我们来研究一下如何使用Docker Machine部署Swarm集群。Docker Machine提供了标准的Docker API 支持，所以任何可以与Docker守护进程进行交互的工具都可以使用Swarm来（透明地）扩增到多台主机上。Docker Machine可以用来在个人电脑、云端以及的数据中心里创建Docker主机。它为创建服务器，安装Docker以及根据用户设定来配置Docker客户端提供了便捷化的解决方案。我们可以使用任何驱动来部署swarm集群，并且swarm集群将由于使用了TLS加密具有极好的安全性。下面是我提供的简便方法。1. 安装Docker MachineDocker Machine 在各种Linux系统上都支持的很好。首先，我们需要从Github上下载最新版本的Docker Machine。我们使用curl命令来下载最先版本Docker Machine ie 0.2.0。64位操作系统：# curl -L https://github.com/docker/machine/releases/download/v0.2.0/docker-machine_linux-amd64 > /usr/local/bin/docker-machine 32位操作系统：# curl -L https://github.com/docker/machine/releases/download/v0.2.0/docker-machine_linux-i386 > /usr/local/bin/docker-machine 下载了最先版本的Docker Machine之后，我们需要对 /usr/local/bin/ 目录下的docker-machine文件的权限进行修改。命令如下：# chmod +x /usr/local/bin/docker-machine 在做完上面的事情以后，我们要确保docker-machine已经安装正确。怎么检查呢？运行docker-machine -v指令，该指令将会给出我们系统上所安装的docker-machine版本。# docker-machine -v 为了让Docker命令能够在我们的机器上运行，必须还要在机器上安装Docker客户端。命令如下。# curl -L https://get.docker.com/builds/linux/x86_64/docker-latest > /usr/local/bin/docker # chmod +x /usr/local/bin/docker 2. 创建Machine在将Docker Machine安装到我们的设备上之后，我们需要使用Docker Machine创建一个machine。在这篇文章中，我们会将其部署在Digital Ocean Platform上。所以我们将使用“digitalocean”作为它的Driver API，然后将docker swarm运行在其中。这个Droplet会被设置为Swarm主控节点，我们还要创建另外一个Droplet，并将其设定为Swarm节点代理。创建machine的命令如下：# docker-machine create --driver digitalocean --digitalocean-access-token <API-Token> linux-dev 备注： 假设我们要创建一个名为“linux-dev”的machine。是用户在Digital Ocean Cloud Platform的Digital Ocean控制面板中生成的密钥。为了获取这个密钥，我们需要登录我们的Digital Ocean控制面板，然后点击API选项，之后点击Generate New Token，起个名字，然后在Read和Write两个选项上打钩。之后我们将得到一个很长的十六进制密钥，这个就是了。用其替换上面那条命令中的API-Token字段。现在，运行下面的指令，将Machine 的配置变量加载进shell里。# eval "$(docker-machine env linux-dev)" 然后，我们使用如下命令将我们的machine标记为ACTIVE状态。# docker-machine active linux-dev 现在，我们检查它（指machine）是否被标记为了 ACTIVE "*"。# docker-machine ls 3. 运行Swarm Docker镜像现在，在我们创建完成了machine之后。我们需要将swarm docker镜像部署上去。这个machine将会运行这个docker镜像，并且控制Swarm主控节点和从节点。使用下面的指令运行镜像：# docker run swarm create 如果你想要在32位操作系统上运行swarm docker镜像。你需要SSH登录到Droplet当中。# docker-machine ssh # docker run swarm create # exit 4. 创建Swarm主控节点在我们的swarm image已经运行在machine当中之后，我们将要创建一个Swarm主控节点。使用下面的语句，添加一个主控节点。# docker-machine create \ -d digitalocean \ --digitalocean-access-token <DIGITALOCEAN-TOKEN> --swarm \ --swarm-master \ --swarm-discovery token://<CLUSTER-ID> \ swarm-master 5. 创建Swarm从节点现在，我们将要创建一个swarm从节点，此节点将与Swarm主控节点相连接。下面的指令将创建一个新的名为swarm-node的droplet，其与Swarm主控节点相连。到此，我们就拥有了一个两节点的swarm集群了。# docker-machine create \ -d digitalocean \ --digitalocean-access-token <DIGITALOCEAN-TOKEN> --swarm \ --swarm-discovery token://<TOKEN-FROM-ABOVE> \ swarm-node 6. 与Swarm主控节点连接现在，我们连接Swarm主控节点以便我们可以依照需求和配置文件在节点间部署Docker容器。运行下列命令将Swarm主控节点的Machine配置文件加载到环境当中。# eval "$(docker-machine env --swarm swarm-master)" 然后，我们就可以跨节点地运行我们所需的容器了。在这里，我们还要检查一下是否一切正常。所以，运行docker info命令来检查Swarm集群的信息。# docker info 总结我们可以用Docker Machine轻而易举地创建Swarm集群。这种方法有非常高的效率，因为它极大地减少了系统管理员和用户的时间消耗。在这篇文章中，我们以Digital Ocean作为驱动，通过创建一个主控节点和一个从节点成功地部署了集群。其他类似的驱动还有VirtualBox，Google Cloud Computing，Amazon Web Service，Microsoft Azure等等。这些连接都是通过TLS进行加密的，具有很高的安全性。如果你有任何的疑问，建议，反馈，欢迎在下面的评论框中注明以便我们可以更好地提高文章的质量！via: http://linoxide.com/linux-how-to/provision-swarm-clusters-using-docker-machine/作者：Arun Pyasi 译者：DongShuaike 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
如何在云服务提供商的平台上使用Docker Machine
大家好，今天我们来了解如何使用Docker Machine在各种云服务提供商的平台上部署Docker。Docker Machine是一个可以帮助我们在自己的电脑、云服务提供商的平台以及我们数据中心的机器上创建Docker机器的应用程序。它为创建服务器、在服务器中安装Docker、根据用户需求配置Docker客户端提供了简单的解决方案。驱动API对本地机器、数据中心的虚拟机或者公用云机器都适用。Docker Machine支持Windows、OSX和Linux，并且提供一个独立的二进制文件，可以直接使用。它让我们可以充分利用支持Docker的基础设施的生态环境合作伙伴，并且使用相同的接口进行访问。它让人们可以使用一个命令来简单而迅速地在不同的云平台部署Docker容器。1. 安装Docker MachineDocker Machine可以很好地支持每一种Linux发行版。首先，我们需要从Github网站下载最新版本的。这里我们使用curl来下载目前最新0.2.0版本的Docker Machine。在64位操作系统运行：# curl -L https://github.com/docker/machine/releases/download/v0.2.0/docker-machine_linux-amd64 > /usr/local/bin/docker-machine 在32位操作系统运行：# curl -L https://github.com/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 https://get.docker.com/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选项指定Digital Ocean Control Panel提供的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或者服务器。# exit 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版本，不建议在生产环境使用。如果你有任何问题、建议、反馈，请在下方的评论框中写下来，我们会改进或者更新我们的内容。谢谢！享受吧 :-)via: http://linoxide.com/linux-how-to/use-docker-machine-cloud-provider/作者：Arun Pyasi 译者：goreliu 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出