Docker基础27--6.2 Docker三剑客之Machine

6.2 Docker三剑客之Machine

Machine项目是Docker官方的开源项目,负责实现对Docker运行环境进行安装和管理,特别在管理多个Docker环境时,使用Machine要比手动管理高效得多。

Machine的定位是“在本地或者云环境中创建Docker主机”。

6.2.1 安装machine

获取安装包

wget https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-linux-x86_64

将此文件赋予可执行权限

chmod a+x docker-machine-linux-x86_64

创建软链接到/usr/sbin

ln -s /root/dockerlab/machine/docker-machine-linux-x86_64 /usr/sbin/docker-machine

这样,我们就可以不管在任何路径下,都可以执行docker-machine命令了。

6.2.2生成第一台machine

首先确保本地主机和目标主机网络互通,并且本地主机可以免密登入到目标主机。

实验环境:

本地主机:192.168.0.197(就是安装了machine的那台主机)

目标主机1:192.168.0.198

目标主机2:192.168.0.199

step1:在本地主机上生成ssh密钥对,并将公钥复制到目标主机

ssh-keygen

Docker基础27--6.2 Docker三剑客之Machine_第1张图片

 

这边所有的选项都不管,直接打回车就可以。

ssh-copy-id

Docker基础27--6.2 Docker三剑客之Machine_第2张图片

 

这边执行过程中会让你输入目标主机的用户密码(我们这边使用root用户)

这样,我们就可以在本地主机上免密码登入到目标主机了。

 

这里不用输入密码了。

Step2 在目标主机上放通2376/tcp端口

firewall-cmd --add-port=2376/tcp –permanent

firewall-cmd --add-port=2376/tcp

step3部署目标主机

docker-machine create -d generic --generic-ip-address=192.168.0.198 --generic-ssh-user=root machine198

命令注解:

create:创建一个docker主机

-d:驱动类型(generic|virtualbox

Generic:普通类型(通过SSH创建主机)

Virtualbox:启动一个virtualbox虚拟机,并部署docker

--generic-ip-adddress=:目标主机的ip

--generic-ssh-user=:目标主机的用户名

Docker基础27--6.2 Docker三剑客之Machine_第3张图片

 

到目标主机上去看,发现docker 服务已经起来了。

Docker基础27--6.2 Docker三剑客之Machine_第4张图片

 

注意红框中的内容,目标主机上的docker已开启了2376+tls,我们可以通过tls远程访问(详见5.6.1小节)

6.2.3 docker-machine常用命令

1)docker –machine ls      #列出所有docker主机

 

这两台主机就是我们刚刚用docker-machine create创建的两台主机

2)docker-machine active       #列出处于active的docker主机

激活状态意味着当前的DOCKER_HOST环境变量指向该主机。

 

目前还没有主机处于active状态

我们将machine198激活,实际上就是将docker-machine的一些环境变量设成machine198的内容

eval "$(docker-machine env machine198)"

 

 

可以看到,machine198已经处于active状态

这时候我们在docker-machine这台主机上操作docker,就相当于是在machine198这台主机的操作。

我们来验证一下:

我们在197(安装docker-machine)的主机上拉取一个busybox的镜像

Docker基础27--6.2 Docker三剑客之Machine_第5张图片

 

然后到machine198这台主机上去看一下

 

发现是一样的。

  1. docker-machine config      #显示docker主机的配置信息

docker-machine config machine198

 

  1. docker-machine config       #显示连接到某个主机需要的环境变量。

Docker基础27--6.2 Docker三剑客之Machine_第6张图片

 

注意红框内的提示,意思是用eval "$(docker-machine env machine198)"这个命令来配置你的shell,就是我们上面第二部分,讲docker-machine active时候用的这个命令。

这个命令相当于是执行了以下几条命令:

export DOCKER_TLS_VERIFY="1"

export DOCKER_HOST="tcp://192.168.0.198:2376"

export DOCKER_CERT_PATH="/root/.docker/machine/machines/machine198"

export DOCKER_MACHINE_NAME="machine198"

这个eval,相当于是把docker-machine env machine198这条命令获取的输出,转换成了命令。

这时候,我们看一下环境变量:

 

环境变量都已成变成machine198的参数了,把我们执行docker命令就相当是在machine198那台主机上执行是一样的。

6)docker-machine inpect      #输出docker主机的详细信息

Docker基础27--6.2 Docker三剑客之Machine_第7张图片

 

7)docker-machine ip 获取docker主机的IP

 

8)docker-machine kill#杀死docker主机

 

Genric模式不支持,只有在虚拟模式下才支持此功能。

9)docker-machine restart     #重启docker主机

Docker基础27--6.2 Docker三剑客之Machine_第8张图片

 

相当于执行了一下shutdown –r now这个命令

10)docker-machine  ssh        #通过ssh登入docker主机

 

11)docker-machine status        #获取docker主机的状态

 

12)docker -H :2376 --tls    #远程执行docker命令

 

这个功能和5.6.1小节中介绍的TLS方式docker远程管理,是一样的。

你可能感兴趣的:(docker基础,docker,linux,运维)