🍁博主简介:
🏅云计算领域优质创作者
🏅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]只输出符合过滤条件主机
👑👑👑结束语👑👑👑
版权归原作者 小鹏linux 所有, 如有侵权,请联系我们删除。