【云原生 | 49】Docker三剑客ѻ Docker Machine

博主简介
        云计算领域优质创作者
        2022年CSDN新星计划python赛道第一名

        2022年CSDN原力计划优质作者
        阿里云ACE认证高级工程师
        阿里云开发者社区专家博主

交流社区:CSDN云计算交流社区欢迎您的加入!

目录

1、 Docker Machine简介

2、安装 Machine

2.1 linux平台上安装 

2.2 Mac OS系统上的安装

2.3 Windows系统上的安装 

3、使用Machine 

3.1 虚拟化平台 

3.2  本地主机

3.3 云平台驱动 

4、Machine命令 

4.1 active 

4.2 config 

4.3 create 

4.4 env 

5.5 inspect 

5.6 ip 

5.7 kill 

5.8 ls 

 结束语​


Docker Machine是Docker官方三剑客项目之一,负责使用Docker的第一步,在多种平台上快速安装Docker环境。它支持多种平台,让用户可以在很短时间内搭建一套Docker主机集群
本章将介绍Docker Machine项目的具体情况,以及安装和使用命令。

1、 Docker Machine简介

Machine项目是Docker官方的开源项目,负责实现对Docker主机本 身进行管理,其代码在 https://github.com/docker/machine 上开源。
Machine项目主要由Go编写,用户可以在本地任意指定被Machine管理的Docker主机,并对其进行操作。Machine定位是“在本地或者云环境中创建Docker主机(Create Docker hosts on your computer,on cloud providers,and inside your own data center.)”

其基本功能包括:

在指定节点上安装Docker引擎,配置其为Docker主机;

集中管理所有Docker主机。

Machine连接不同类型的节点是通过不同驱动指定的,目前已经支持了包括IBM、Amazon、Google等多家数据中心的云主机。

2、安装 Machine

Docker Machine可以在多种操作系统平台上安装,包括Linux、MacOS以及Windows

2.1 linux平台上安装 

在Linux平台上的安装十分简单,推荐从官方Release库

https://github.com/docker/machine/releases )直接下载编译好的二进制文件即可。

例如,在Linux 64位系统上直接下载对应的二进制包,以最新的0.8.0为例。

$ curl -L https://github.com/docker/machine/releases/download/v0.8.0/dockermachine_linux-amd64.zip >machine.zip
unzip machine.zip
rm machine.zip
sudo mv -f docker-machine* /usr/local/bin
$ sudo chmod +x /usr/local/bin/docker-machine*

查看实际上安装的二进制命令:

$ls /usr/local/bin/docker-machine*
/usr/local/bin/docker-machine
/usr/local/bin/docker-machine-driver-google
/usr/local/bin/docker-machine-driver-virtualbox
/usr/local/bin/docker-machine-driver-amazonec2
/usr/local/bin/docker-machine-driver-hyperv
/usr/local/bin/docker-machine-driver-vmwarefusion
/usr/local/bin/docker-machine-driver-azure
/usr/local/bin/docker-machine-driver-none
/usr/local/bin/docker-machine-driver-vmwarevcloudair
/usr/local/bin/docker-machine-driver-digitalocean
/usr/local/bin/docker-machine-driver-openstack
/usr/local/bin/docker-machine-driver-vmwarevsphere
/usr/local/bin/docker-machine-driver-exoscale
/usr/local/bin/docker-machine-driver-rackspace
/usr/local/bin/docker-machine-driver-generic
/usr/local/bin/docker-machine-driver-softlayer
可以看到,主要包括docker-machine主命令,和一系列的驱动,这些驱动支持Docker Machine命令在这些平台上执行。

安装完成后,查看版本信息,验证运行正常:

$ $docker-machine -v
docker-machine version 0.8.0 (5ab2a1e)

2.2 Mac OS系统上的安装

Mac OS平台上的安装跟Linux平台十分类似,唯一不同是下载二进制文件的路径不同。
例如,同样是0.8.0版本,Mac OS平台对应的路径为 https://github.com/docker/machine/releases/download/v0.8.0/docker-machine_darwin-amd64.zip

2.3 Windows系统上的安装 

Windows下面要复杂一些,首先需要安装git-bash。git-bash是 Windows下的git客户端软件包,会提供类似Linux下的一些基本工具,例如bash、curl、ssh命令等,最新版本为2.6.3。
安装之后,启动一个git-bash的命令行界面,仍然通过下载二进制包方式安装Docker Machine:
$ if [[ ! -d "$HOME/bin" ]]; then mkdir -p "$HOME/bin"; fi
curl -L https://github.com/docker/machine/releases/download/v0.8.0/dockermachine_windows-amd64.zip >machine.zip
unzip machine.zip
rm machine.zip
mv -f docker-machine* "$HOME/bin"

3、使用Machine 

Docker Machine通过多种后端驱动来管理不同的资源,包括虚拟机、本地主机和云平台等。

通过-d选项可以选择支持的驱动类型。

3.1 虚拟化平台 

可以通过virtualbox驱动支持本地(需要已安装virtualbox)启动一个虚拟机并配置为Docker主机:
$ docker-machine create --driver=virtualbox vbox-instance
将启动一个全新的虚拟机,并安装Docker引擎。
此外,还支持Microsoft Hyper-V虚拟化平台。

3.2  本地主机

这种驱动适合主机操作系统和SSH服务都已经安装好,需要对其安装Docker引擎。
首先确保本地主机可以通过user账号的key直接通过ssh连到目标主机。使用generic类型的驱动,注册一台Docker主机,命名为test:
$ docker-machine create -d generic --generic-ip-address=10.0.100.102 --genericssh-user=user test
Running pre-create checks...
Creating machine...
(test) OUT | Importing SSH key...
Waiting for machine to be running, this may take a few minutes...
Machine is running, waiting for SSH to be available...
Detecting operating system of created instance...
Detecting the provisioner...
Provisioning created instance...
...
从命令输出上可以看到,Machine通过SSH连接到指定节点,并在上面安装Docker引擎。
创建主机成功后,可以通过docker-machine ls命令来查看注册到本地管理列表中的Docker主机:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
test - generic Running tcp://10.0.100.102:2376

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

3.3 云平台驱动 

以Amazon Web Services云平台为例,配置其上的虚拟机为Docker主机

需要指定Access Key ID、Secret Access Key、VPC ID等信息。例如:

$ docker-machine create --driver amazonec2 --amazonec2-access-key AKI*******
--amazonec2-secret-key 8T93C********* --amazonec2-vpc-id vpc-******
aws_instance
其他支持的云平台还包括Microsoft Azure、Digital Ocean、 Exoscale、Google Compute Engine、Rackspace、IBM Softlayer等。

4、Machine命令 

每个命令都带有一系列参数,可以通过如下命令来查看用法: 

docker-machine  -h

命令参见如下表

【云原生 | 49】Docker三剑客ѻ Docker Machine_第1张图片

下面具体介绍部分命令的用法。

4.1 active 

格式为:docker-machine active[arg...]

查看当前激活状态的Docker主机。激活状态意味着当前的DOCKER_HOST环境变量指向该主机。例如下面命令列出当前激活主机为dev主机:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL
dev virtualbox Running tcp://192.168.56.102:2376
staging * digitalocean Running tcp://104.236.60.101:2376
$ echo $DOCKER_HOST
tcp://104.236.60.101:2376
$ docker-machine active
staging

4.2 config 

格式为:docker-machine config[OPTIONS][arg...]
查看到激活Docker主机的连接信息。例如下面显示dev主机的连接信息:
$ docker-machine config dev
--tlsverify --tlscacert="/home/docker_user/.docker/machines/dev/ca.pem" --tlscert="
/home/docker_user/.docker/machines/dev/cert.pem" --tlskey="/home/docker_user
/.docker/machines/dev/key.pem" -H tcp://192.168.56.102:2376

4.3 create 

格式为:docker-machine create[OPTIONS][arg...]
创建一个Docker主机。
选项包括:
·--driver,-d"none"指定驱动类型;
·--engine-install-url" https://get.docker.com "配置Dokcer主机时候的安装URL;
·--engine-opt option以键值对格式指定所创建Docker引擎的参数;
·--engine-insecure-registry option以键值对格式指定所创建Docker引擎允许访问的不支持认证的注册仓库服务;
·--engine-registry-mirror option指定使用注册仓库镜像;
·--engine-label option为所创建的Docker引擎添加标签;
·--engine-storage-driver存储后端驱动类型;
·--engine-env option指定环境变量;
·--swarm指定使用Swarm;
·--swarm-image"swarm:latest"使用Swarm时候采用的镜像;
·--swarm-master配置机器作为Swarm集群的master节点;
·--swarm-discovery Swarm集群的服务发现机制参数;
·--swarm-strategy"spread"Swarm默认调度策略;
·--swarm-opt option任意传递给Swarm的参数;
·--swarm-host"tcp://0.0.0.0:3376"指定地址将监听Swarm master节点请求;
·--swarm-addr从指定地址发送广播加入Swarm集群服务。
例如,通过如下命令可以创建一个Docker主机的虚拟机镜像:
$ docker-machine create -d virtualbox \
--engine-storage-driver overlay \
--engine-label name=testmachine \
--engine-label year=2015 \
--engine-opt dns=8.8.8.8 \
--engine-env HTTP_PROXY=http://proxy.com:3128 \
--engine-insecure-registry registry.private.com \
mydockermachine

所创建Docker主机虚拟机中的Docker引擎将具有如下动能:

·使用overlay类型的存储驱动;
·带有name=testmachine和year=2015两个标签;
·引擎采用8.8.8.8作为默认DNS;
·环境变量中指定HTTP代理服务 http://proxy.com:3128
·允许使用不带验证的注册仓库服务registry.private.com。

4.4 env 

格式为:docker-machine env[OPTIONS][arg...]
显示连接到某个主机需要的环境变量。
例如,显示连接到default主机所需要的环境变量:
$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.56.102:2376"
export DOCKER_CERT_PATH="/home/docker_user/.docker/machine/certs"
export DOCKER_MACHINE_NAME="default"

5.5 inspect 

格式为:docker-machine inspect[OPTIONS][arg...]
以json格式输出指定Docker主机的详细信息。
例如:
$ docker-machine inspect default
{
    "DriverName": "virtualbox",
    "Driver": {
        "MachineName": "docker-host-128be8d287b2028316c0ad5714b90bcfc11f998056f2f790f7c1f43f3d1e6eda",
        "SSHPort": 22,
        "Memory": 1024,
        "DiskSize": 20000,
        "Boot2DockerURL": "",
        "IPAddress": "192.168.56.102"
    },
    ...
}

5.6 ip 

获取指定Docker主机地址。
例如:
$ docker-machine ip default
192.168.22.198

5.7 kill 

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

5.8 ls 

列出所有管理的主机。
格式为:docker-machine ls[OPTIONS][arg...]
例如:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL
default - virtualbox Stopped
test0 - virtualbox Running tcp://192.168.56.105:2376
test1 - virtualbox Running tcp://192.168.56.106:2376
test2 * virtualbox Running tcp://192.168.56.107:2376
可以通过--filter来只输出某些Docker主机,支持过滤器包括名称正则表达式、驱动类型、Swarm管理节点名称、状态等。
例如:
$ docker-machine ls --filter state=Stopped
NAME ACTIVE DRIVER STATE URL SWARM
default - virtualbox Stopped

支持选项包括:

·--quiet,-q减少无关输出信息;
·--filter[--filter option--filter option]只输出符合过滤条件主机

 结束语

你可能感兴趣的:(云原生,docker)