Docker Machine 介绍

概述

在介绍 Docker Swarm 之前,先行介绍 Docker Machine —— 用于在本地平台或云平台之上快速安装 Docker 宿主机 (即带有 Docker Engine 的宿主机),并使用 docker-machine 管理这些宿主机。

官网显示:Docker Machine 属于被取代的产品。在此介绍它,希望能够快速构建 Docker 环境,从而为后续的 Docker Swarm 做铺垫。

Docker Machine

Docker Machine 借助于命令 docker-machine 完成各种操作,具体包括:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Usage: docker-machine [OPTIONS] COMMAND [arg...]

Create and manage machines running Docker.

Commands:
# 查看 docker-machine 所管理的全部宿主机
ls List machines
# 查看哪台宿主机处于活动状态(当前主机的环境变量 DOCKER_HOST 指向某个宿主机,则该宿主机处于活动状态)
active Print which machine is active
# 查看特定宿主机的 SSH 连接配置信息(主要包括 CA、Cert、key、IP+端口)
config Print the connection config for machine
# 查看特定宿主机的 IP 地址
ip Get the IP address of a machine
# 查看特定宿主机的详细信息
inspect Inspect information about a machine
# 查看特定宿主机的 URL
url Get the URL of a machine
# 查看特定宿主机的状态
status Get the status of a machine
# 显示相关命令用于设置 Docker Client 的指向(命令指向完成后,当前 Client 将指向特定宿主机)
env Display the commands to set up the environment for the Docker client

# 创建一个 Docker 宿主机
create Create a machine
# 启动\停止\杀死\重启\移除一个宿主机
start Start a machine
stop Stop a machine
kill Kill a machine
restart Restart a machine
rm Remove a machine
# SSH 远程登录特定宿主机
ssh Log into or run a command on a machine with SSH.
# 宿主机之间拷贝文件
scp Copy files between machines
# 挂载目录至特定宿主机
mount Mount or unmount a directory from a machine with SSHFS.

# 重置特定宿主机
provision Re-provision existing machines
# 为特定宿主机重新生成证书
regenerate-certs Regenerate TLS Certificates for a machine
# 升级特定宿主机的 Docker 版本
upgrade Upgrade a machine to the latest version of Docker

在此,我们着重介绍 envcreate 命令。

  • env

    使用该命令后,将得到如下类似输出结果:

    1
    2
    3
    4
    5
    6
    export DOCKER_TLS_VERIFY="1"
    export DOCKER_HOST="tcp://192.168.99.100:2376"
    export DOCKER_CERT_PATH="/home/hhd/.docker/machine/machines/1-machine"
    export DOCKER_MACHINE_NAME="1-machine"
    # Run this command to configure your shell:
    # eval $(docker-machine env 1-machine)

    当执行命令 eval $(docker-machine env 1-machine) 后,当前主机的 Docker Client 就会与 1-machine 中的 Docker Server 进行通信,也就是说,这条命令设置了当前主机的 Docker Client 的通信对象。

    如果想切换当前主机的 Docker Client 的通信对象为本地 Docker Server,只需执行命令 eval $(docker-machine env -u) 即可。

    另说一句,docker context 是专门用于配置、切换 Docker Client 指向的命令。

  • create

    该命令用于创建一个 Docker 宿主机,因此其中必然涉及多种参数的配置。

    我们在此仅说明若干重要参数:

    --driver –> 指定创建宿主机所用的驱动程序,常见为 virtualbox。

    --virtualbox-hostonly-cidr –> 指定宿主机的 IP 地址。

    --virtualbox-memory –> 指定宿主机的内存限制

    --virtualbox-disk-size –> 指定宿主机的磁盘限制