docker-machine就是docker工具集中提供的用来管理容器化主机的工具,用来管理运行在不同环境的主机,包括:本地虚拟机,远程虚拟机,公有云中的虚拟机都可以通过一个命令统一进行管理。

01. 在本地虚拟化环境中创建容器化主机

以下操作可以在Windows server 2016 操作系统上执行

docker-machine create -d hyperv --hyperv-virtual-switch "DockerNAT" local-docker01

注意以上命令中使用了–hyperv-virtual-switch 后面的 DockerNAT 对应的是Hyper-v 中的虚拟网络名称,我这里使用的是内部网络,你也可以使用外部网络

以上命令的运行结果如下:

Running pre-create checks...
(local-docker01) Image cache directory does not exist, creating it at C:\Users\azureuser\.docker\machine\cache...
(local-docker01) No default Boot2Docker ISO found locally, downloading the latest release...
(local-docker01) Latest release for github.com/boot2docker/boot2docker is v17.11.0-ce
(local-docker01) Downloading C:\Users\azureuser\.docker\machine\cache\boot2docker.iso from https://github.com/boot2docke
r/boot2docker/releases/download/v17.11.0-ce/boot2docker.iso...
(local-docker01) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
Creating machine...
(local-docker01) Copying C:\Users\azureuser\.docker\machine\cache\boot2docker.iso to C:\Users\azureuser\.docker\machine\
machines\local-docker01\boot2docker.iso...
(local-docker01) Creating SSH key...
(local-docker01) Creating VM...
(local-docker01) Using switch "DockerNAT"
(local-docker01) Creating VHD
(local-docker01) Starting VM...
(local-docker01) 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... This machine has been allocated an IP address, but Docker Machine could not
reach it successfully. SSH for the machine should still work, but connecting to exposed ports, such as
the Docker daemon port (usually <ip>:2376), may not work properly. You may need to add the route manually, or use another related workaround. This could be due to a VPN, proxy, or host file configuration issue. You also might want to clear any VirtualBox host only interfaces you are not using.
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 local-docker01

 

02. 查看docker-machine列表并使用ssh连接

通过docker-machine创建的容器化主机会在你的计算机上保存记录,可以通过docker-machine ls这个命令查询到所有已经连接到当前计算机的容器化主机。

docker-machine ls

显示结果如下:

NAME             ACTIVE   DRIVER   STATE     URL                                    SWARM   DOCKER        ERRORS
local-docker01 - hyperv Running tcp://[fe80::215:5dff:fe00:40e]:2376 v17.11.0-ce

 这些主机的记录保存在 C:\Users\{当前用户}\.docker\machine\machines 目录下,如:C:\Users\azureuser\.docker\machine\machines

该目录下保存了使用ssh key-pair连接这些主机所需要的所有证书和密钥文件,需要妥善保存。同时,这样我们也就可以直接ssh远程登录到这些主机上进行操作了

docker-machine ssh local-docker01

 输出如下:

                      ##         .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 17.11.0-ce, build HEAD : e620608 - Tue Nov 21 18:11:40 UTC 2017
Docker version 17.11.0-ce, build 1caf76c
docker@local-docker01:~$

  

03. 将docker工具链接到远程docker-machine主机

由于docker工具本身是通过rest api调用远程主机的docker daemon的接口实现操作,我们可以通过修改本地docker命令所链接的远程主机地址的方式来实现操作目标的切换,docker-machine给我们提供了简化的操作命令。通过 docker-machine env {主机名称} 就可以获取这些链接参数并配置docker工具。

docker-machine env local-docker01

输出如下:

SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp://[fe80::215:5dff:fe00:40e]:2376
SET DOCKER_CERT_PATH=C:\Users\azureuser\.docker\machine\machines\local-docker01
SET DOCKER_MACHINE_NAME=local-docker01
SET COMPOSE_CONVERT_WINDOWS_PATHS=true
REM Run this command to configure your shell:
REM @FOR /f "tokens=*" %i IN ('docker-machine env local-docker01') DO @%i

 执行下面命令,将本地docker命令链接到了local-docker01这台容器主机上

 @FOR /f "tokens=*" %i IN ('docker-machine env local-docker01') DO @%i

后面的docker ps操作所针对的就是这台主机了。

 docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

  

04. docker-machine 的其他命令

docker-machine还提供很多丰富的命令可以帮助你管理容器化主机的生命周期,如:

删除主机 :
docker-machine rm {主机名}
重新生成证书和密钥,如果远程主机的ip地址发生了变化,我们一般需要使用这个命令才能从新连接:
docker-machine regenerate-certs {主机名}
获取远程主机的ip地址:
docker-machine ip {主机名}

Create a new Docker Machine with the Hyper-V driver的更多相关文章

  1. Docker Machine 详解

    笔者在<Docker Machine 简介>一文中简单介绍了 Docker Machine 及其基本用法,但是忽略的细节实在是太多了.比如 Docker 与 Docker Machine ...

  2. 045、安装Docker Machine (2019-03-08 周五)

    参考https://www.cnblogs.com/CloudMan6/p/7223599.html   前面我们的实验中只有一个docker host ,所有的容器都是运行在这一个host上的.但在 ...

  3. docker machine 使用教程

    之前,Docker的安装流程非常复杂,用户需要登录到相应的主机上,根据官方的安装和配置指南来安装Docker,并且不同的操作系统的安装步骤也是不一样的.而有了Machine后,不管是在笔记本.虚拟机还 ...

  4. DOCKER 学习笔记7 Docker Machine 在阿里云实例化ECS 以及本地Windows 实例化虚拟机实战

    前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...

  5. DOCKER 学习笔记7 Docker Machine 建立虚拟机实战,以及错误总结

    前言 通过以上6小节的学习,已经可以使用DOCKER 熟练的部署应用程序了.大家都可以发现使用 DOCKER 带来的方便之处,因为现在的话,只是在一台服务器上部署,这样部署,我们只需要一条命令,需要的 ...

  6. Docker Machine, Compose, and Swarm: How They Work Together

    The three tools are now neatly packaged into what’s called the Docker Toolbox. Docker Machine1/ crea ...

  7. Docker Machine

    Docker Machine http://dockone.io/article/1485?utm_source=tuicool&utm_medium=referral 本地安装与使用 Doc ...

  8. Docker Machine 简介

    Docker Machine 是什么? Docker Machine 是 Docker 官方提供的一个工具,它可以帮助我们在远程的机器上安装 Docker,或者在虚拟机 host 上直接安装虚拟机并在 ...

  9. 用 Docker Machine 创建 Azure 虚拟主机

    搭建环境向来是一个重复造轮子的过程,Docker Machine 则把用户搭建 Docker 环境的各种方案汇集在了一起.笔者在<Docker Machine 简介>一文中演示了使用 Do ...

随机推荐

  1. php中自定义事件---事件驱动

    PHP中自定义事件驱动,处理机制. 原文:https://www.cnblogs.com/mafeifan/p/4322271.html ------------------------------- ...

  2. The WebSocket Protocol

      [Docs] [txt|pdf] [draft-ietf-hybi-t...] [Diff1] [Diff2] [Errata] Updated by: 7936 PROPOSED STANDAR ...

  3. C# 重载和默认参数(那种情况下使用更好)

    当你提供函数,外部因为要传入不同参数个数,重载会导致 外部if增加,  默认参数可以消除外部的if.当外部调用函数需要判断调用那个函数,根据调用次数增多 if跟着调用持续增多两种不同的调用 //重载 ...

  4. Fragment的陷阱

    以前做过的一个项目,Fragment嵌套高德地图,当再次进入Fragment的时候,会出现奇怪的现象.嵌套的地图会出现滑动不动的情况,起先还以为是高德的bug呢,经过一番研究,终确定这是一个坑. 先对 ...

  5. java基础讲解01-----简单了解一下java

    2017-4-12(晚)  闲来无事,静静把自己了解的java,好好回忆一次.如果能帮助别人也好.会不断补充 java有关的书籍真的很多,我也不过多的介绍了. 1.什么是java 2.java的语言特 ...

  6. 数据结构(逻辑结构,物理结构,特点) C#多线程编程的同步也线程安全 C#多线程编程笔记 String 与 StringBuilder (StringBuffer) 数据结构与算法-初体验(极客专栏)

    数据结构(逻辑结构,物理结构,特点) 一.数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关.逻辑结构包括: 集合 数 ...

  7. SQL Server Profiler 跟踪sql小技巧

    使用Profile监控sql时候经常会有很多很多的sql,想查询那条是自己的sql很困难,但是连接字串有个参数可以解决这个问题这个参数是Application Name例如说 我们在需要的数据库连接中 ...

  8. GNU--gprof使用总结

    Added macros ACE_USES_GPROF which enables users to use gprof in a multithreaded environment with ACE ...

  9. java中finalkeyword使用说明

    必须在域的定义处或者每一个构造器中用表达式对final进行赋值,这正是final域在使用前总是被初始化的原因所在.

  10. jquery.zclip实现点击拷贝文字功能

    <script type="text/javascript" src="http://www.sitejs.cn/templets/skins/js/jquery- ...