Linux企业实战之容器(九)——Docker(9)

Docker-Machine

  • Docker-Machine是Docker官方编排(Orchestration)项目之一,负责在多种平台上快速安装Docker环境;
  • Docker-Machine支持在常规Linux操作系统、虚拟化平台、openstack、公有云等不同环境下安装Docker host;

假如我们有100台主机,都需要配置Docker环境,如果我们一台一台去手工的安装,这是一件效率很低的事情,就像Linux中的PXE安装系统一样,我们应该有这种快速部署的方法,就是在一台主机上配置好相应的资源,然后让其他需要配置Docker环境的主机,来从这台主机上来获取资源,然后这台主机来进行控制,部署Docker环境,这样会大大的提高效率。这时候我们的Docker-Machine就可以大显身手了。

  • Docker-Machine常用命令

docker-machine active 				显示当前的活动主机
docker-machine config 				显示连接主机的配置
docker-machine create 				创建一个主机
docker-machine env 					设置当前的环境与哪个主机通信
docker-machine inspect 				查看主机的详细信息
docker-machine ip 					查看主机的IP
docker-machine kill 				强制关闭一个主机
docker-machine ls 					查看所有的主机信息
docker-machine provision 			重新配置现在主机
docker-machine regenerate-certs 	为主机重新生成证书
docker-machine restart 				重启主机
docker-machine rm 					删除主机
docker-machine ssh 					以SSH的方式连接到主机上
docker-machine scp 					远程复制
docker-machine status 				查看主机的状态
docker-machine stop 				停止一个正在运行的主机
docker-machine upgrade 				升级主机的docker服务到最新版本
docker-machine version 				查看docker-machine版本
  • 使用Docker-Machine工具给一台全新的主机部署Docker环境

    • 实验环境
虚拟机配置
server1作为管理虚拟机,安装Docker-Machine,已经配置了Docker环境
server2新安装的虚拟机,未配置Docker环境
classroom未配置Docker环境,提供第三方软件仓库
  • 步骤一:在classroom上搭建第三方软件仓库
cd /var/www/html
mkdir docker
ls
createrepo -v /var/www/html/docker
cd /var/www/html
vim docker.repo
cat docker.repo
vim get-docker.sh					#修改其中的yum源指向
192.168.43.250/docker				#在浏览器中测试一下,能否访问到
192.168.43.250/get-docker.sh		#在浏览器中测试一下,脚本能否访问到

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 步骤二:在server1上部署Docker-Machine,并且设置对server2的免密登录
cd /usr/local/bin
chmod +x   docker-machine
docker-machine
ssh-keygen					
ssh-copy-id server2					#设置免密登录server2
ssh root@192.168.43.102 -X			#验证能否免密登录

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 步骤三:在server2上修改系统的版本改为centos,因为前面的脚本指定的如果系统版本是rhel就会退出,然后在server1上利用docker-machine对server2进行docker的部署

  • 在server2上

vim /etc/os-release
cat /etc/os-release

在这里插入图片描述

  • 在server1上
cat /etc/hosts												#添加server2的IP和主机名
docker-machine create --driver generic --engine-install-url="http://192.168.43.250/get-docker.sh" --generic-ip-address=192.168.43.102 server2		#给server2部署docker环境
docker-machine ls
tree .docker/machine/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 在server2上查看docker的状态,查看是否有docker-ce yum源
systemctl status docker
cd /etc/yum.repos.d/
ls
cd /etc/docker
ls
rpm -qa | grep docker
netstat -antlp
docker images
docker ps

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 步骤四:在server1上远程操作server2的docker服务
docker-machine config server2
docker `docker-machine config server2` ps
docker `docker-machine config server2` images
docker `docker-machine config server2` pull busybox

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 步骤五:利用docker-machine将server3也添加进来,然后可以在server1上进行切换对于server2和server3的远程操作

在server3上

vim /etc/os-release
cat /etc/os-release

在这里插入图片描述

在server1上设置对server3的免密登录

ssh-copy-id server3								#设置对server3的免密登录
docker-machine create --driver generic --engine-install-url="http://192.168.43.250/get-docker.sh" --generic-ip-address=192.168.43.103 server3
docker-machine ls
docker-machine env server3
docker-machine	env server2

在这里插入图片描述
在这里插入图片描述

在server1上添加server2和server3的变量,使得可以直接在server1上切换到server2和server3的docker环境下进行操作

docker-machine env server3
docker-machine ls
eval $(docker-machine env server3)
docker-machine ls
docker images
eval $(docker-machine env server2)			#切换为server2的docker环境
docker-machine ls
docker images

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:我们这里在server1上添加的server2和server3的变量,只是docker部分的,也就是说只能操作server2和server3上的docker指令,其他命令均是在server1的环境下。

  • 步骤六:在这里能够很明显的发现一个问题,那就是我们在步骤五中使用的方法,有时候容易混淆到底是server1的docker环境,还是server2或者server3的docker环境,接下来就使用另外一种方法,这种方法能够明显的看到当前到底是哪个主机的docker环境
在浏览器中输入地址https://github.com/docker/machine
然后点击contrib/completion,然后再点击bash,会发现有三个脚本;
将这三个脚本下载到server1的/etc/bash_completion.d目录下(注意:必须是这个目录)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

cd /etc/bash_completion.d
wget https://github.com/docker/machine/blob/master/contrib/completion/bash/docker-machine-prompt.bash
wget https://github.com/docker/machine/blob/master/contrib/completion/bash/docker-machine-wrapper.bash
wget https://github.com/docker/machine/blob/master/contrib/completion/bash/docker-machine.bash
source /etc/bash_completion.d/docker-machine-prompt.bash	#source一下,将设置在文件中的配置信息马上生效
source /etc/bash_completion.d/docker-machine-wrapper.bash
source /etc/bash_completion.d/docker-machine.bash
vim .bashrc   #配置.bashrc配置文件,,系统就会自动读取的,不是用来执行的
source .bashrc
eval $(docker-machine env server2)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 总结

    • 上面我们总共讲述了三种在docker-machine主机上控制远程主机的docker的方法;
    • 第二种方法比较容易分不清楚,当前是哪个主机的docker环境,但是第三种方法能够分辨清楚;
    • 三种方法各有优缺点,我们在使用时结合自己当前的条件以及要求来进行合理的选择。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值