0


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

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

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

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

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 <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"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

本文转载自: https://blog.csdn.net/qq_62294245/article/details/128458515
版权归原作者 小鹏linux 所有, 如有侵权,请联系我们删除。

“【云原生 | 49】Docker三剑客ѻ Docker Machine”的评论:

还没有评论