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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

🍁博主简介
        🏅云计算领域优质创作者
        🏅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 computeron cloud providersand 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 <COMMAND> -h

命令参见如下表

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

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"swarmlatest"使用Swarm时候采用的镜像
·--swarm-master配置机器作为Swarm集群的master节点
·--swarm-discovery Swarm集群的服务发现机制参数
·--swarm-strategy"spread"Swarm默认调度策略
·--swarm-opt option任意传递给Swarm的参数
·--swarm-host"tcp://0.0.0.03376"指定地址将监听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]只输出符合过滤条件主机

 👑👑👑结束语👑👑👑

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Docker