Docker三剑客——Docker-machine的安装与应用

870 阅读5分钟

Docker-machine是个啥?

Docker Machine 是Docker官方编排项目之一,Docker Machine 是一个工具,它允许你在虚拟宿主机上安装Docker,并使用docker-machine命令管理这个宿主机,可以使用Docker Machine在本地的MAC或者windows box、公司网络,数据中心或者AWS这样的云提供商上创建docker。

使用docker-machine命令,可以启动、审查、停止、重启托管的docker 也可以升级Docker客户端和守护程序并配置docker客户端和宿主机通信。

说了这么多,其实我就是为了更方便的在远程主机上部署docker环境,可以方便的管理集群节点。主要作用有:

  • Docker Machine 使你能够在各种 Linux 上配置多个远程 Docker 宿主机。

  • Machine 允许你在较早的 Mac 或 Windows 系统上运行 Docker。

总结:快速的安装docker环境,部署docker虚拟机,使用docker-machine可以一键部署到远程主机里面,只需要创建docker-machine creat 就行,在远程主机里面不用再麻烦的重新部署docker环境。

Docker-machine咋安装?

我的环境是:管理主机:Ubuntu18.04 远程主机:树莓派,两台主机连接同一个热点。

我的目标是在Ubuntu18.04上安装docker-machine,然后给远程主机树莓派安装docker环境,并能进行远程节点进行管理。

管理主机安装docker-machine

以下都在root命令执行 sudo su

base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
  chmod +x /usr/local/bin/docker-machine

image.png 如果一直下载不下来,就去配置以下docker加速器

vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
#注意,json的格式一定要配置正确,:后面有一个空格。否则会导致docker启动失败,解决方法是在此文件加一个{},就可以正常启动docker。

可以参考blog.csdn.net/m0_38026518…

下载成功之后,运行docker-machine -v,成功显示版本

image.png

建立SSH远程连接

ps -ef | grep sshd  #检查是否安装并启动ssh server服务
#如果没有出现下图所示,则
apt-get update
apt-get install openssh-server  /  apt-get install openssh-client
systemctl start sshd.service    #重启ssh服务

image.png

注意,远程主机和管理主机都要进行此步骤。

在远程主机上所作的工作:

vi /etc/ssh/sshd_config

PermitRootLogin yes #修改此项为允许root登录

service ssh restart /etc/init.d/ssh restart  #重启工作


#在树莓派中,仅修改以上是不行的,ssh是连接不成功的,会出现:
Error creating machine: Error detecting OS: Too many retries waiting for SSH to be available.
需要修改:
RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication yes
PasswordAuthentication yes

在管理主机所作的工作:

进行免密登录:
ssh-keygen  #一路回车,直到生成密钥
ssh-copy-id root或者用户名@主机IP
ssh-copy-id wxm@192.168.80.131 #把生成的密钥传输到主机中,中间有一次输入密码
ssh wxm@192.168.80.131  #直接进入远程主机,进行操作

说一下这里在树莓派遇到的坑:

image.png 在登录树莓派远程主机时,会显示以上错误,没有登录权限。看网上的解决措施是:

在SD卡新建一个ssh空文件夹,然后重新启动ssh服务

但是此方法并不适用我的系统。最后找到原因是root密码和用户pi密码设置一样,发生冲突,导致错误。解决措施:

sudo passwd pi #修改用户密码

最后,还要说明一点,需要使用ssh root@192.168.99.192进行登录,在root模式下进行登录。如果不行的话,记得reboot一下。

Docker-machine怎么用?

上面的准备工作完成之后,开始创建虚拟远程docekr主机,使用命令:

docker-machine create --driver generic --generic-ip-address=192.168.99.192 pi  #后面写上你的远程主机的ip和给docker远程主机起一个名字pi。

image.png 好了,现在你就可以使用了docker-machine远程管理节点了。在这里说明一下,上面显示了一个错误,就是找不到树莓派OS,这个目前原因还没有找到。不过在其他远程Linux是可以正常通信的。

Docker-machine常用指令

docker-machine ls #列出所有的远程主机
docker-machine rm #删除远程主机
docker-machine ssh #建立远程连接

ctive	查看当前激活状态的Docker主机
config	查看当前激活状态Docker主机的连接信息
creat	 创建Docker主机
env	显示连接到某个主机需要的环境变量
inspect	以json格式输出指定Docker的详细信息
ip	获取指定Docker主机的地址
kill	直接杀死指定的Docker主机
ls	列出所有的管理主机
provision	重新配置指定主机
regenerate-certs	为某个主机重新生成TLS信息
restart	重启指定的主机
rm	删除某台Docker主机,对应的虚拟机也会被删除
ssh	通过SSH连接到主机上,执行命令
scp	在Docker主机之间以及Docker主机和本地主机之间通过scp远程复制数据
mount	使用SSHFS从计算机装载或卸载目录
start	启动一个指定的Docker主机,如果对象是个虚拟机,该虚拟机将被启动
status	获取指定Docker主机的状态(包括:Running、Paused、Saved、Stopped、Stopping、Starting、Error)等
stop	停止一个指定的Docker主机
upgrade	将一个指定主机的Docker版本更新为最新
url	获取指定Docker主机的监听URL
version	显示Docker Machine的版本或者主机Docker版本
help	显示帮助信息

参考链接

blog.csdn.net/kity9420/ar…

blog.csdn.net/weixin_3412…

blog.csdn.net/qq_37556726…

blog.csdn.net/wh211212/ar…

zhuanlan.zhihu.com/p/166115005

blog.csdn.net/linuxpassio…