Jusene's Blog

Docker三剑客之一 Docker Machine

字数统计: 1.2k阅读时长: 5 min
2017/11/12 Share

Docker Machine

Docker Machine它负责docker管理的第一步,安装docker环境,支持多平台管理,可以让用户在很短的时间内组建一套docker集群,并且可以在docker machine的管理机上通过改变相关的变量直接操作远程docker,管理集群中的所有docker。

安装使用docker-machine

docker-machine的安装十分简单,只要在官网的releases直接下载编译好的二进制文件即可。

官网文档:https://docs.docker.com/machine/install-machine/

1
~]# docker-machine version
2
docker-machine version 0.12.2, build 9371605

docker-machine通过多种后端驱动来管理不同的资源,通过-d(–driver)指定后端驱动。

我们最常用的莫不过–generic,这类驱动需要先保障双机互信,整个过程相信也是通过ssh来完成的。

1
~]# docker-machine create -d generic --generic-ip-address=172.16.62.110 --generic-ssh-user=root 172.16.62.110
2
.....
3
4
#如果成功,我们可以通过一下命令查看
5
~]# docker-machine ls
6
NAME            ACTIVE   DRIVER    STATE     URL                        SWARM   DOCKER        ERRORS
7
172.16.62.110   -        generic   Running   tcp://172.16.62.110:2376           v17.10.0-ce

docker-machine命令参数

  • active:查看当前激活状态的Docker主机
  • config:查看到激活Docker主机的连接信息
  • create:创建一个Docker主机
  • inspect:以json的格式输出指定的Docker主机的详细信息
  • ip:获取指定的Docker主机地址
  • kill:直接杀死指定的Docker主机
  • ls:列出所有管理的主机
  • regenerate-certs:为某个主机重新生成TLS认证信息
  • restart:重启指定Docker主机
  • rm:删除某台Docker主机,对应管理的虚机也会删除
  • scp:在Docker主机之间以及Docker主机与本地之间通过scp来远程复制文件
  • ssh:通过ssh连接到主机上,执行命令
  • start:启动一个指定的Docker主机,对象是虚机也会被启动
  • status:获取指定Docker主机的状态
  • stop:停止一个Docker主机
  • upgrade:将指定主机Docker版本更新为最新
  • url:获取指定Docker主机监听的url

active

什么为激活的主机,表示当前的DOCKER_HOST环境变量指向该主机。

1
~]# docker-machine env 172.16.62.110
2
export DOCKER_TLS_VERIFY="1"
3
export DOCKER_HOST="tcp://172.16.62.110:2376"
4
export DOCKER_CERT_PATH="/root/.docker/machine/machines/172.16.62.110"
5
export DOCKER_MACHINE_NAME="172.16.62.110"
6
# Run this command to configure your shell: 
7
# eval $(docker-machine env 172.16.62.110)
8
~]# eval $(docker-machine env 172.16.62.110)
9
~]# docker-machine active
10
172.16.62.110
11
~]# echo $DOCKER_HOST
12
tcp://172.16.62.110:2376

在这个状态下,操作的为172.16.62.110的docker主机。

config

查看激活主机的连接状况。

1
~]# docker-machine config 172.16.62.110
2
--tlsverify
3
--tlscacert="/root/.docker/machine/machines/172.16.62.110/ca.pem"
4
--tlscert="/root/.docker/machine/machines/172.16.62.110/cert.pem"
5
--tlskey="/root/.docker/machine/machines/172.16.62.110/key.pem"
6
-H=tcp://172.16.62.110:2376

create

创建一个docker主机。

相关的常用选项:

1
- --driver,-d "none"  指定驱动类型
2
- --engine-install-url  “https://get.docker.com” 配置docker主机的安装url
3
- --engine-opt option 以键值对的格式指定所创建Docker引擎参数
4
- --engine-insecure-registry option 以键值对格式指定所创建Docker引擎允许访问的不支持认证的注册仓库服务
5
- --engine-registry-mirror option 指定使用注册仓库镜像
6
- --engine-label option 为所创建的Docker引擎添加标签
7
- --engine-storage-driver 存储后端驱动类型
8
- --engine-env option 指定环境变量
9
- --swarm 指定使用swarm
10
- --swarm-image “swarm:latest” 使用swarm时候采用的环境
11
- --swarm-master 配置机器作为swarm集群的master节点
12
- --swarm-discovery swarm集群的服务发现机制参数
13
- --swarm-strategy “spread” swarm默认调度策略
14
- --swarm-opt option 任意传递给swarm的参数
15
- --swarm-host “tcp://0.0.0.0:3376"   指定地址将监听swarm master节点请求
16
- --swarm-addr 从指定地址发送广播加入swarm集群服务
1
~]# docker-machine create -d generic \
2
	--engine-storage-driver overlay \
3
	--engine-label name=test \
4
	--engine-opt dns=8.8.8.8 \
5
	--engine-insecure-registry registry.jusene.me \
6
	mydockermachine

所创建的主机虚拟机的docker引擎都会存在以上我们添加的所有特性。

env

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

1
~]# docker-machine env 172.16.62.110
2
export DOCKER_TLS_VERIFY="1"
3
export DOCKER_HOST="tcp://172.16.62.110:2376"
4
export DOCKER_CERT_PATH="/root/.docker/machine/machines/172.16.62.110"
5
export DOCKER_MACHINE_NAME="172.16.62.110"

inspect

以json格式输出指定docker主机的详细信息。

1
~]# docker-machine inspect 172.16.62.110
2
{
3
    "ConfigVersion": 3,
4
    "Driver": {
5
        "IPAddress": "172.16.62.110",
6
        "MachineName": "172.16.62.110",
7
        "SSHUser": "root",
8
        "SSHPort": 22,
9
        "SSHKeyPath": "",
10
        "StorePath": "/root/.docker/machine",
11
        "SwarmMaster": false,
12
13
 ....

ip

获得指定docker主机的ip。

1
~]# docker-machine ip 172.16.62.110     
2
172.16.62.110
CATALOG
  1. 1. Docker Machine
  2. 2. 安装使用docker-machine
  3. 3. docker-machine命令参数
    1. 3.1. active
    2. 3.2. config
    3. 3.3. create
    4. 3.4. env
    5. 3.5. inspect
    6. 3.6. ip