部署voting app的第一步,是为集群节点(swarm nodes)创建 Docker machines。我们可以在不同的实体PC、虚拟机或者云服务器上创建这些 Docker化 的主机。


在本例中,我们使用Docker Machine来创建两个虚拟机(virtual machines)在同一个系统上(See Docker Machine Overview to learn more.)。

创建 manager 和 worker 虚拟机

使用 docker machine 创建一个本地的 virtual machine
docker-machine create --driver hyperv <HOSTNAME>
这里使用的是 windows 里的 hyperv 创建的虚拟机

创建过程中出现一个 
   Error creating machine: Error in driver during machine creation: exit status 1
解决方案:
  • 按照链接https://docs.docker.com/machine/drivers/hyper-v/的说明,配置系统。
  • 首先在Hyperv管理工具里面,创建一个新的虚拟交换机,并使用外部链接(如果不指定,默认链接到系统的DockerNAT上,它是在docker安装时候创建的,用于 docker for windows 的,不是给我们使用的)
  • 然后将创建的新虚拟机,主动链接到该交换机上
  • 重启
  • 注意:创建虚拟交换机时,要选择实体网卡;创建过程要在管理员模式下进行,不然会出现一直停在waiting for host
下面是一个创建的例子:
PS C:\WINDOWS\system32>  docker-machine create -d hyperv --hyperv-virtual-switch "Primary Virtual Switch" --hyperv-disk-size "5000" --hyperv-memory "512" manager
Running pre-create checks...
Creating machine...
(manager1) Copying C:\Users\Vicky\.docker\machine\cache\boot2docker.iso to C:\Users\Vicky\.docker\machine\machines\manag
er1\boot2docker.iso...
(manager1) Creating SSH key...
(manager1) Creating VM...
(manager1) Using switch "Primary Virtual Switch"
(manager1) Creating VHD
(manager1) Starting VM...
(manager1) Waiting for host to start...
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 boot2docker...
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: C:\Program Files\Doc
ker\Docker\Resources\bin\docker-machine.exe env manager1
PS C:\WINDOWS\system32>
 
验证虚拟机的IP地址
使用命令 docker-machine ls 来验证。
PS C:\Users\Administrator> docker-machine ls
NAME      ACTIVE   DRIVER   STATE     URL                       SWARM   DOCKER    ERRORS
manager   -        hyperv   Running   tcp://192.168.0.9:2376            v1.13.1
worker    -        hyperv   Running   tcp://192.168.0.10:2376           v1.13.1
这样就有了 两个 docker化 的虚拟机,每一个都独自运行一个 Docker Engine。可以通过 Docker CLI 通信,并且可以配置为集群节点(Swarm nodes)。
 

与虚拟机交互

下面讲述两种与创建的虚拟机交互的方式:

通过pre-configured shell来管理虚拟机

我们可以使用 docker-machine 命令,在shell中设置虚拟机的环境变量。这样,我们在本地shell上的 Docker 命令,就会在对应的虚拟机上运行。

1. 运行 docker-machine env manager 命令,获得环境变量
PS C:\Users\Administrator> docker-machine env manager
$Env:DOCKER_TLS_VERIFY = "1"
$Env:DOCKER_HOST = "tcp://192.168.0.9:2376"
$Env:DOCKER_CERT_PATH = "C:\Users\Administrator\.docker\machine\machines\manager"
$Env:DOCKER_MACHINE_NAME = "manager"
$Env:COMPOSE_CONVERT_WINDOWS_PATHS = "true"
# Run this command to configure your shell:
# & "C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe" env manager | Invoke-Expression

2. 使用最后一行的命令 
& "C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe" env manager | Invoke-Expression
将shell连接到 manager 虚拟机。

3。 再次运行 docker-machine ls 命令:
PS C:\Users\Administrator> docker-machine ls
NAME      ACTIVE   DRIVER   STATE     URL                       SWARM   DOCKER    ERRORS
manager   *        hyperv   Running   tcp://192.168.0.9:2376            v1.13.1
worker    -        hyperv   Running   tcp://192.168.0.10:2376           v1.13.1
可以发现,manager后面出现一个星号,表示的当前,shell已经连接到了 manager 虚拟机。这样,在shell中运行的命令,将会在 manager 虚拟机上执行。(可以用同样的方法,连接到 worker 虚拟机,一个shell可以同时连接多个虚拟机进行操作)

使用 ssh 登录虚拟机

可以使用命令 docker-machine ssh <MACHINE-NAME> 来登录到某台虚拟机上.
PS C:\Users\Administrator> docker-machine ssh manager
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
'_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.13.1, build HEAD : b7f6033 - Wed Feb  8 20:31:48 UTC 2017
Docker version 1.13.1, build 092cba3
docker@manager:~$

What’s next?

我们将会用这两个 Docker machines创建一个集群(swarm)。

一步步创建第一个Docker App —— 2. 创建 Docker化 主机的更多相关文章

  1. 一步步创建第一个Docker App —— 3. 创建一个集群Swarm

    原文:https://docs.docker.com/engine/getstarted-voting-app/create-swarm/ 初始化集群 Swarm 1. 使用 ssh 命令登录 man ...

  2. django学习笔记【002】创建第一个django app

    2.3.3 1.创建一个名叫polls的app python3. manage.py startapp polls tree mysite/ mysite/ ├── db.sqlite3 ├── ma ...

  3. Cordova - Windows 下创建第一个 Android App

    官方文档: Create your first Cordova app Android Platform Guide 安装 JDK 和 Android SDK 注意: 需要将 JK 和 Android ...

  4. NodeJS笔记(五) 使用React Native 创建第一个 Android APP

    参考:原文地址 几个月前官方推出了快速创建工具包,由于对React Native不熟悉这里直接使用这2个工具包进行创建 1. create-react-native-app(下文简称CRNA): 2. ...

  5. Docker App应用

    Docker App应用 这是一个实验特性. 实验性功能提供了对未来产品功能的早期访问.这些特性仅用于测试和反馈,因为它们可能在没有警告的情况下在不同版本之间更改,或者可以从将来的版本中完全删除.在生 ...

  6. JavaEE开发基于Eclipse的环境搭建以及Maven Web App的创建

    本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project.本篇博客是JavaEE开发的开篇,也是基础.本篇博客的内容干货还是比较多的,而且比较实用,并且都是采用目前最新版本的工具 ...

  7. 编写第一个Flutter App(翻译)

    博客搬迁至http://blog.wangjiegulu.com RSS订阅:http://blog.wangjiegulu.com/feed.xml 以下代码 Github 地址:https://g ...

  8. JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建

    本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project.本篇博客是JavaEE开发的开篇,也是基础.本篇博客的内容干货还是比较多的,而且比较实用,并且都是采用目前最新版本的工具 ...

  9. symfony-安装,使用与创建应用程序以及创建第一个hello world界面

    说明:由于学校里面要用到symfony3进行开发,并且之前对php和mysql有了一定的学习,所以这里进行对symfony2.3版本的学习,目前的版本已经到了symfony4了,但是本人之后要用到的是 ...

随机推荐

  1. python的eval和json.loads(),json.dumps()

    eval() 将字符串当成一个表达式去执行,可以想象成一个去字符串然后执行的操作. In [1]: s = '3*8' In [2]: eval(s) Out[2]: 24 eval()和json.l ...

  2. word2vec的理解

    在学习LSTM的时候,了解了word2vec,简单的理解就是把词变成向量.看了很多书,也搜索了很多博客,大多数都是在word2vec的实现原理.数学公式,和一堆怎么样重新写一个word2vec的pyt ...

  3. ExternalAccessory串口通信

    ExternalAccessory 使用文档 项目下载地址 前言 公司希望通过串口通信的方式实现苹果手机与公司产品进行通信,通过Lighting接口,也就是苹果的数据线.苹果的API External ...

  4. SQL-Server collation, what is it and how to change db/column collation

    The thing about collations is that although database have it's own collation, every table, and every ...

  5. scrapy有用的(代理,user-agent,随机延迟等)

    代理 方法一(待测试) 见scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware import os # 设置相应的代理用户名密码,主机和 ...

  6. java实验1实验报告(20135232王玥)

    实验一 Java开发环境的熟悉 一.实验内容 1. 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试Java程序 二.实验要求 1.没有Linux基础的同学建议先 ...

  7. Leetcode题库——26.删除排序数组中的重复项

    @author: ZZQ @software: PyCharm @file: removeDuplicates.py @time: 2018/9/23 13:51 要求: 给定一个排序数组,你需要在原 ...

  8. BNUOJ 52305 Around the World 树形dp

    题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52305 Around the World Time Limit: 20000msMemory ...

  9. VS2013的安装与C#进行简单单元测试(英文版教程)

    这次安装这个软件可是花了我不少时间,其中遇到的问题不言而喻,下面讲解一下我完成这次作业以及分享一些个人体会吧! 第一步:提供下载地址(https://www.visualstudio.com/down ...

  10. ASP.NET MVC 1.0 参考源码索引

    http://www.projky.com/asp.netmvc/1.0/System/Web/Mvc/AcceptVerbsAttribute.cs.htmlhttp://www.projky.co ...