文章目录
1.docker-machine是什么
1.简单来说它就是用来快速创建一个docker容器环境的,它是一个安装和管理 Docker 的工具。它有自己的命令行工具:
docker-machine
2.Docker 是一个 Client-Server 架构
的应用,Docker是大家对Docker Engine简称,Docker包括以下三个部分
Docker daemon
一套与 Docker daemon 交互的 REST API
一个命令行客户端
2.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版本
3.实验过程
实验环境:
rhel 7.6的虚拟机
172.25.2.2. ser1 docker-machine管理端,装有docker服务
172.25.2.3 ser2 没有docker服务
172.25.2.4 ser3 没有docker服务
172.25.2.250 真机 提供第三方软件仓库
关闭主机的防火墙和selinux
真机配置第三方软件仓库并共享
1.在apache的默认发布目录下,创建软件包的目录
2.创建依赖
3.编辑yum仓库文件,放在apache的默认发布目录下
4.
编辑yum源的指向
5.在浏览器中访问到第三方软件包
6.
ser1中
1.在ser1上下载docker-machine
2.
3.docker-machine安装成功
4.
5.设置ser1的对ser2和ser3的免密登录
6.将ser3和ser2中的系统版本改为centos,因为前面的脚本指定的如果系统版本是rhel就会退出。
7.对ser3部署Docker服务时,发现出现报错
8.经排查,发现是真机的软件包的权限不够
将软件包的权限改为644
9.重新在ser1中,为ser3创建docker
10.在ser3中发现,自动配置上了repo文件
11.发现ser3中docker已经启动,并且获得了端口2376
12.在ser2中部署docker
13.
14.
在machine主机上操作远程主机的方式1
2.
3.
4.
5.
6.ser2要能有外部网络
7.在ser1上操作ser2让运行容器
在machine主机上操作远程主机的方式2
2.
3.操作远程主机3
4.
Linux系统里的env命令可以显示当前用户的环境变量,还可以用来在指定环境变量下执行其他命令。
下面来比较一下 set,env和export命令 的异同:
set命令显示当前shell的变量,包括当前用户的变量;
env命令显示当前用户的变量;
export命令显示当前导出成用户变量的shell变量。
每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如HOME,SHELL等这些变量,但shell自己的变量不同shell是不同的,比如BASH_ARGC,BASH等,这些变量只有set才会显示,是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export “导出”变成一个用户变量。
现在来解决特征不明显的问题
在machine主机上操作远程主机的方式3
此方式实在方法2的基础上完成的.
1.点击bash
将这三个脚本文件下载到ser1中
下载的路径必须是
/etc/bash_completion.d/
source一下
,将设置在文件中的配置信息马上生效。如果你不source修改的文件的话,只有等下次重启后才能生效
配置
.bashrc
配置文件,在你的账号登录系统的时候,系统就会自动读取的,不是用来执行的
补充:
eval命令
将会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描
。这些需要zhidao进行两次扫描的变量有时候被称为复杂变量
。
命令格式:eval [参数]
补充说明:
eval可读取一连串的参数,然后再依参数本身的特性来执行。参数不限数目,彼此之间用分号分开。
用法示例:
将字符串变量s的值作为命令执行
s="ls"
eval $s
如何指定需要安装的docker的版本
1.编辑真机的get-dcoker脚本
,里面写的内容应该是自己指定的docker的版本
2.
可以看出利用docker-machine自动部署docker的时候会自动生成证书,加密
5.
6.
总结:
当在实际生产环境当中需要同时为docker集群中的每一个节点部署docker的时候可以使用docker-machine工具来实现快速的,远程的部署。