docker-machine 创建主机(win10)

0.396字数 852阅读 3046

在 win10 上使用 docker-machine 创建主机使用 hyperv 驱动.

准备工作

官方提示: 注意,必须事先在 Hyper-V 管理器中新建一个 外部虚拟交换机 执行下面的命令时,使用 --hyperv-virtual-switch=MY_SWITCH 指定虚拟交换机名称

看起来好麻烦, 但是又能怎么办呢? ⊙﹏⊙

点击 win 窗口图标, 在 windows 管理工具下选择 Hyper-V 管理器, 然后在右侧操作栏选择虚拟交换机管理器, 诺, 像这样:

3.png

然后在弹出的新窗口中点击新建虚拟机网络交换机, 选择外部, 点击创建虚拟交换机

4.png

为新的虚拟交换机取一个好听的名字, 然后选择外部网络, 选择相应的网卡, 然后点击确定, 这时我们的外部虚拟交换机就准备好了, 这是创建 docker 主机的准备工作

5.png

创建主机

好了, 准备工作完毕, 下面就可以创建主机了, 在命令行中行云流水的敲出这行代码:

docker-machine create --driver hyperv --hyperv-virtual-switch=docker manager

这里需要在管理员权限下运行命令行

命令跑起来了, 一切都很完美

Creating CA: D:\docker\certs\ca.pem
Creating client certificate: D:\docker\certs\cert.pem
Running pre-create checks...
Creating machine...
(manager) Copying D:\docker\cache\boot2docker.iso to D:\docker\machines\manager\boot2docker.iso...
(manager) Creating SSH key...
(manager) Creating VM...
(manager) Using switch "docker"
(manager) Creating VHD
(manager) Starting VM...
(manager) 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...

好的, 继续等待...

等待...

...

...

如果你跟我一样幸运的话, 你会发现, 等了半天, 命令行还是非常优雅的卡在了:

Waiting for SSH to be available...

怎么回事, 我是个急性子啊, 这样下去, 是要我等到天荒地老吗?

可能你和我一样已经按捺不住了...

再让我等可能会忍不住砸键盘了

好吧, 不能再等了, 是时候行动起来了:

$ docker-machine ls
NAME      ACTIVE   DRIVER   STATE     URL                         SWARM   DOCKER    ERRORS
manager   -        hyperv   Running   tcp://192.168.43.196:2376           Unknown   Unable to query docker version: Get https://192.168.43.196:2376/v1.15/version: x509: certificate signed by unknown authority

额...怎么出现了errors, 这是什么鬼

那我试试 ssh 连接这个主机吧:

docker-machine ssh manager

进不去?

咋办? 完全不知道怎么回事啊, 好吧, 只有祭出神器了: 百度, google ...

得到一行调试命令:

ssh -vvv -F /dev/null -o PasswordAuthentication=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ConnectionAttempts=3 -o ConnectTimeout=10 -o ControlMaster=no -o ControlPath=none docker@192.168.43.157 -o IdentitiesOnly=yes -i D:\docker\machines\manager\id_rsa -p 22

这里需要修改成你对应的 docker 主机的 IP 以及私钥地址

一大堆 debug 信息输出了出来, 还是连接不到 docker 主机 , 不过这里我们得到了关键信息

debug3: Bad permissions. Try removing permissions for user: S-1-5-11 on file D:\\docker\\machines\\manager\\id_rsa.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'D:\\docker\\machines\\manager\\id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.

这个好像是私钥的权限问题造成的, 提示我们去修改私钥权限, 好吧.

找到主机目录, 这里我的主机目录是

D:\docker\machines\manager

这里有一个 id_rsa 文件, 在文件上单击右键, 选择属性, 打开弹窗后, 选择安全

6.png

在这里我尝试了很多次, 当然, 也失败了很多次, 每次要么就是报 bad permissions 错误, 就是报 bad owner 错误, 这里, 我直接给出正确的处理方式

  • 首先, 点击编辑, 新的弹窗中添加一个新的用户, 给到所有权限, 点击确定

我的电脑用户是 Hans, 所以我添加了一个 Hans 用户, 然后给他所有权限

  • 然后点击高级按钮, 点击所有者后面的 更改 按钮, 将所有者更改为 Hans
  • 紧接着点击左下角的禁用继承, 选择第一项, 确定退出
  • 之后再点击编辑, 删除除了 Hans 之外的其他用户
7.png

我这里保留了一个 Administrators 用户, 把他的权限只保留了读取, 不过好像也并不影响

接下来, 在命令行中输入

$ docker-machine restart manager
(manager) Waiting for host to stop...
(manager) Waiting for host to start...
Waiting for SSH to be available...
Detecting the provisioner...
Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

嘿嘿, 感觉不错的样子, 到这里 docker 主机就算创建成功了.

如果有帮到你, 点个赞吧.

推荐阅读更多精彩内容