Docker Machine是Docker官方三剑客项目之一,负责使用Docker的第一步,在多种平台上快速安装Docker环境
它支持多种平台,让用户在很短时间内搭建一套Docker主机集群

Machine项目是Docker官方的开源项目,负责实现对Docker主机本身进行管理。
Machine项目主要由GO编写,用户可以在本地任意指定被Machine管理的Docker主机,并对其进行操作。
Machine定位是“在本地或者云环境中创建Docker主机”

Docker Machine是一个工具,它允许你在虚拟宿主机上安装Docker Engine,并使用docker-machine命令管理这些宿主机。
你可以使用Machine在你本地的Mac或Window box、公司网络、数据中心、或像AWS这样的云提供商上创建Docker宿主机。
使用docker-machine命令,你可以启动、审查、停止和重新启动托管的宿主机、升级Docker客户端和守护进程、并配置Docker客户端与你的宿主机通信。

Docker Machine使你能够在各种Linux上配置多个远程Docker宿主机。
此外,Machine允许你在较早的Mac或Windows系统上运行Docker。

如果你有一个Linux作为你的主系统,并且想要运行docker命令,你需要做的就是下载并且安装Docker Engine。
然而,如果你想要在网络上、云中甚至本地配置多个Docker宿主机,你需要Docker Machine。

无论你的主系统是Mac、Windows还是Linux,你都可以在其上安装Docker Machine,并且用docker-machine命令来配置和管理大量的Docker宿主机。
它会自动创建宿主机、在其上安装Docker Engine、然后配置docker客户端。
每个被管理的宿主机('machine')是Docker宿主机和配置好的客户端的结合。

Docker Engine是一个客户端-服务器应用程序,由Docker守护进程、一个REST API指定与守护进程交互的接口、和一个命令行接口(CLI)与守护进程通信。
Docker Engine从CLI中接受docker命令,例如docker run,docker ps。

Docker Machine是一个用户配置和管理你的宿主机(上面具有Docker Engine的主机)的工具
通常,你在你的本地系统上安装Docker Machine。Docker Machine有自己的命令行客户端docker-machine和Docker Engine客户端Docker。
你可以使用Machine在一个或多个虚拟系统上安装Docker Engine。
这些虚拟系统可以是本地的(就像你在Mac或者Windows上使用Machine在VirtualBox中安装和运行Docker Engine一样)或远程的(就像你使用Machine在云提供商上provision Dockerized宿主机上一样)。
Dockerized宿主机本身可以认为是,且有实就称为,被管理的"machines"。

1.安装

curl -L https://github.com/docker/machine/releases/download/v0.16.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine
chmod +x /tmp/docker-machine
sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

2.使用

Docker Machine通过多种后端驱动来管理不同的资源,包括虚拟机、本地主机和云平台。
通过-d选项可以选择支持的驱动类型,下面主要讲通过本地主机来配置Docker主机。
这种驱动适合主机操作系统的SSH服务已经安装好,需要对其安装docker引擎。
首先确保本地主机可以通过user账号的key直接通过ssh连接到目标主机,这就需要提前复制公钥文件,达到无密码登录。

配置之前:

[root@centos004 .ssh]# docker
-bash: docker: command not found

可以发现目前并没有安装docker。

[root@centos003 .ssh]# docker-machine create -d generic --generic-ip-address=129.28.86.57 --generic-ssh-user=root test2
Running pre-create checks...
Creating machine...
(test2) No SSH key specified. Assuming an existing key at the default location.
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available... 等待ssh响应
Detecting the provisioner...
Provisioning with centos...
Copying certs to the local machine directory... 拷贝证书
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon... 配置daemon
Checking connection to Docker...
Docker is up and running! 启动Docker
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env test2

从命令输出上可以看出,Machine通过SSH连接到指定节点,并在上面安装Docker引擎。
创建成功之后可以通过docker-machine ls命令查看注册到本地管理列表中的DDocker主机。

[root@centos003 .ssh]# docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
test2 - generic Running tcp://129.28.86.57:2376 v18.09.0

此时再去对应的主机上查看是否安装成功,可以通过版本号来验证:

[root@test ~]# docker -v
Docker version 18.09., build 4d60db4

可以通过inspect命令查看具体的主机信息。

3.Machine命令

命令格式:
  docker-machine [OPTIONS] COMMAND [arg...]

如果想要查看每个命令的完整信息可以使用--help。

  docker-machine COMMAND --help

OPTIONS选项列表:

COMMAND选项列表:

下面是具体的说明:

(1)active

Usage: docker-machine active [OPTIONS] [arg...]

(2)config

Usage: docker-machine config [OPTIONS] [arg...]

查看激活Docker主机的连接信息。

[root@centos003 .ssh]# docker-machine config test2
--tlsverify
--tlscacert="/root/.docker/machine/machines/test2/ca.pem"
--tlscert="/root/.docker/machine/machines/test2/cert.pem"
--tlskey="/root/.docker/machine/machines/test2/key.pem"
-H=tcp://129.28.86.57:2376

(3)create

Usage: docker-machine config [OPTIONS] [arg...]

创建一个Docker主机。

选项包括:

  • --driver, -d "virtualbox"  指定驱动类型
  • --engine-install-url "https://get.docker.com"  配置docker主机时的安装URL
  • --engine-opt [--engine-opt option --engine-opt option]  以键值对格式指定所创建Docker引擎的参数
  • --engine-insecure-registry [--engine-insecure-registry option --engine-insecure-registry option]  以键值对格式指定所创建Docker引擎允许访问的不支持认证的注册仓库服务
  • --engine-registry-mirror [--engine-registry-mirror option --engine-registry-mirror option] 指定使用注册仓库镜像
  • --engine-label [--engine-label option --engine-label option]  为所创建的Docker引擎添加标签
  • --engine-storage-driver  存储后端驱动类型
  • --engine-env [--engine-env option --engine-env option]  指定环境变量
  • --swarm  指定使用Swarm
  • --swarm-addr  指定地址发送广播加入Swarm集群服务
  • --swarm-discovery  Swarm集群的服务发现机制参数
  • --swarm-host "tcp://0.0.0.0:3376"  指定地址将监听Swarm master节点请求
  • --swarm-image "swarm:latest"使用Swarm时候采用的镜像
  • --swarm-master  配置机器作为Swarm集群的master节点
  • --swarm-opt [--swarm-opt option --swarm-opt option]  任意传递给Swarm的参数
  • --swarm-strategy "spread"  Swarm默认调度策略

(4)env

Usage: docker-machine env [OPTIONS] [arg...]

显式连接到某个主机需要的环境变量。

[root@centos003 .ssh]# docker-machine env test2
export DOCKER_TLS_VERIFY=""
export DOCKER_HOST="tcp://129.28.86.57:2376"
export DOCKER_CERT_PATH="/root/.docker/machine/machines/test2"
export DOCKER_MACHINE_NAME="test2"
# Run this command to configure your shell:
# eval $(docker-machine env test2)

(5)inspect

Usage: docker-machine inspect [OPTIONS] [arg...]

[root@centos003 .ssh]# docker-machine inspect test2
{
"ConfigVersion": ,
"Driver": {
"IPAddress": "129.28.86.57",
"MachineName": "test2",
"SSHUser": "root",
"SSHPort": ,
"SSHKeyPath": "",
"StorePath": "/root/.docker/machine",
"SwarmMaster": false,
"SwarmHost": "",
"SwarmDiscovery": "",
"EnginePort": ,
"SSHKey": ""
},
"DriverName": "generic",
"HostOptions": {
"Driver": "",
"Memory": ,
"Disk": ,
"EngineOptions": {
"ArbitraryFlags": [],
"Dns": null,
"GraphDir": "",
"Env": [],
"Ipv6": false,
"InsecureRegistry": [],
"Labels": [],
"LogLevel": "",
"StorageDriver": "",
"SelinuxEnabled": false,
"TlsVerify": true,
"RegistryMirror": [],
"InstallURL": "https://get.docker.com"
},
"SwarmOptions": {
"IsSwarm": false,
"Address": "",
"Discovery": "",
"Agent": false,
"Master": false,
"Host": "tcp://0.0.0.0:3376",
"Image": "swarm:latest",
"Strategy": "spread",
"Heartbeat": ,
"Overcommit": ,
"ArbitraryFlags": [],
"ArbitraryJoinFlags": [],
"Env": null,
"IsExperimental": false
},
"AuthOptions": {
"CertDir": "/root/.docker/machine/certs",
"CaCertPath": "/root/.docker/machine/certs/ca.pem",
"CaPrivateKeyPath": "/root/.docker/machine/certs/ca-key.pem",
"CaCertRemotePath": "",
"ServerCertPath": "/root/.docker/machine/machines/test2/server.pem",
"ServerKeyPath": "/root/.docker/machine/machines/test2/server-key.pem",
"ClientKeyPath": "/root/.docker/machine/certs/key.pem",
"ServerCertRemotePath": "",
"ServerKeyRemotePath": "",
"ClientCertPath": "/root/.docker/machine/certs/cert.pem",
"ServerCertSANs": [],
"StorePath": "/root/.docker/machine/machines/test2"
}
},
"Name": "test2"
}

(6)ip

获取指定Docker主机地址。

[root@centos003 .ssh]# docker-machine ip test2
129.28.86.57

(7)kill

直接杀死指定的Docker主机,指定Docker主机会强行停止。

docker——三剑客之Docker Machine的更多相关文章

  1. Docker(五):Docker 三剑客之 Docker Machine

    上篇文章Docker(四):Docker 三剑客之 Docker Compose介绍了 Docker Compose,这篇文章我们来了解 Docker Machine . Docker Machine ...

  2. Docker 三剑客之 Docker Swarm

    上一篇:Docker 三剑客之 Docker Compose 阅读目录: Docker Machine 创建 Docker 主机 Docker Swarm 配置集群节点 Docker Service ...

  3. Docker 三剑客之 Docker Swarm(基于 overlay 组网通信)

    相关文章:Docker 三剑客之 Docker Swarm 这一篇主要是对 Docker Swarm 的完善,增加基于 overlay 组网通信,以便 Docker 容器可以跨主机访问. 不同主机间的 ...

  4. Docker三剑客之Docker Machine

    一.什么是Docker Machine Docker Machine 是Docker官方编排项目之一,使用go语言编写的,使用不同引擎在多种平台上快速的安装Docker环境,开源地址:https:// ...

  5. docker——三剑客之Docker swarm

    Docker Swarm是Docker官方的三剑客项目之一,提供Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案.使用它,用户可以将多个Docker主机封装为单个大型的虚拟D ...

  6. Docker(六):Docker 三剑客之 Docker Swarm

    实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行.然而,面对 Kubernetes, Mesos 以及 Swarm 等众多容器集群系统,我们该如何选择 ...

  7. Docker三剑客之Docker Swarm

    一.什么是Docker Swarm Swarm是Docker公司推出的用来管理docker集群的平台,几乎全部用GO语言来完成的开发的,代码开源在https://github.com/docker/s ...

  8. Docker(四):Docker 三剑客之 Docker Compose

    前两篇文章我们介绍了 Dockerfile 的使用Docker(二):Dockerfile 使用介绍,我们知道使用一个 Dockerfile 模板文件可以定义一个单独的应用容器,如果需要定义多个容器就 ...

  9. Docker三剑客之Docker Compose

    一.什么是Docker Compose Compose 项目是Docker官方的开源项目,负责实现Docker容器集群的快速编排,开源代码在https://github.com/docker/comp ...

随机推荐

  1. ubuntu下vim配置(刷题和比赛两套)

    1. 平时刷题练习使用 "mswin.vim 插件提供windows下的编辑快捷键功能 source $VIMRUNTIME/mswin.vim behave mswin set nu se ...

  2. 关于BroadCastReceiver安全性的思考

    尊重原创:http://blog.csdn.net/yuanzeyao/article/details/38948863 BroadCastReceiver是Android 四大组件之中的一个,应用非 ...

  3. Android ListView圆角

    首先来看看ListView 相关基本属性 1.单击列表后,列表的背景变成黑色了. 可通过指定android:cacheColorHint的属性来放变它,将它指定为透明. 使用以下的属性值:     a ...

  4. iOS开发:iOS中图片与视频一次性多选 - v2m

    一.使用系统的Assets Library Framework这个是用来访问Photos程序中的图片和视频的库.其中几个类解释如下 ALAsset ->包含一个图片或视频的各种信息 ALAsse ...

  5. Spring学习笔记--初始化和销毁Bean

    可以使用bean的init-method和destroy-method属性来初始化和销毁bean.定义一个Hero类: package com.moonlit.myspring; public cla ...

  6. 鼠标聚焦到Input输入框时,按回车键刷新页面原因及解决方法

    参考地址:http://blog.csdn.net/xuezhongsong/article/details/6859037 方式1:全局控制回车,13-回车键,27-ESC,113-F2 docum ...

  7. MySql学习—— 查询性能优化 深入理解MySql如何执行查询

    本篇深入了解查询优化和服务器的内部机制,了解MySql如何执行特定查询,从中也可以知道如何更改查询执行计划,当我们深入理解MySql如何真正地执行查询,明白高效和低效的真正含义,在实际应用中就能扬长避 ...

  8. <转>KMP算法详解

    看了好久的KMP算法,都一直没有看明白,直到看到了这篇博客http://www.tuicool.com/articles/e2Qbyyf让我瞬间顿悟. 如果你看不懂 KMP 算法,那就看一看这篇文章 ...

  9. Delphi数据类型转换

    [转]Delphi数据类型转换 DateTimeToFileDate        将DELPHI的日期格式转换为DOS的日期格式 DateTimeToStr              将日期时间格式 ...

  10. Docker源码分析(九):Docker镜像

    1.前言 回首过去的2014年,大家可以看到Docker在全球刮起了一阵又一阵的“容器风”,工业界对Docker的探索与实践更是一波高过一波.在如今的2015年以及未来,Docker似乎并不会像其他昙 ...