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. scrapy-splash抓取动态数据例子一

    目前,为了加速页面的加载速度,页面的很多部分都是用JS生成的,而对于用scrapy爬虫来说就是一个很大的问题,因为scrapy没有JS engine,所以爬取的都是静态页面,对于JS生成的动态页面都无 ...

  2. 十个书写Node.js REST API的最佳实践(下)

    收录待用,修改转载已取得腾讯云授权 5. 对你的Node.js REST API进行黑盒测试 测试你的REST API最好的方法之一就是把它们当成黑盒对待. 黑盒测试是一种测试方法,通过这种方法无需知 ...

  3. escape(s, t)函数的实现

    https://item.taobao.com/item.htm? spm=686.1000925.0.0.9TTLHO&id=535006878999 <span style=&quo ...

  4. 算法笔记_167:算法提高 矩阵翻转(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 Ciel有一个N*N的矩阵,每个格子里都有一个整数. N是一个奇数,设X = (N+1)/2.Ciel每次都可以做这样的一次操作:他从矩阵 ...

  5. PHP-解码unicode编码的中文字符

    在Python中使用 "\uxxxx".decode("unicode_escape") 1. class Helper_Tool { public stati ...

  6. RS:关于数据挖掘中的推荐系统

    一.推荐系统概述和常用评价指标 1.1 推荐系统的特点 在知乎搜了一下推荐系统,果真结果比较少,显得小众一些,然后大家对推荐系统普遍的观点是: (1)重要性UI>数据>算法,就是推荐系统中 ...

  7. android 模拟器上传文件 Read-only file system

    在cmd窗口一条命令就可以了:adb shellmount -o remount rw /

  8. ubuntu下运行第一个.net core web程序

    前置条件 ubuntu系统 且已经安装dotnetcore运行环境 mkdir  testMVC 创建一个文件夹 cd testMVC    进入文件夹 dotnet new -t web 创建程序( ...

  9. django源码分析----Related继承结构

    在django中关联关系大概可以分成many-to-one(foriegnkey).one-to-one.many-to-many 这三种.它们有如下的类结构 class RelatedField(F ...

  10. MySQL怎样存储IP地址

    为什么要问如何存储IP 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中不 ...