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 |