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环境。
我的环境是:管理主机:Ubuntu18.04 远程主机:树莓派,两台主机连接同一个热点。
我的目标是在Ubuntu18.04上安装docker-machine,然后给远程主机树莓派安装docker环境,并能进行远程节点进行管理。
以下都在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
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
#注意,json的格式一定要配置正确,:后面有一个空格。否则会导致docker启动失败,解决方法是在此文件加一个{},就可以正常启动docker。
下载成功之后,运行docker-machine -v
,成功显示版本
ps -ef | grep sshd #检查是否安装并启动ssh server服务
#如果没有出现下图所示,则
apt-get update
apt-get install openssh-server / apt-get install openssh-client
systemctl start sshd.service #重启ssh服务
注意,远程主机和管理主机都要进行此步骤。
在远程主机上所作的工作:
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 [email protected] #把生成的密钥传输到主机中,中间有一次输入密码
ssh [email protected] #直接进入远程主机,进行操作
说一下这里在树莓派遇到的坑:
在登录树莓派远程主机时,会显示以上错误,没有登录权限。看网上的解决措施是:
在SD卡新建一个ssh空文件夹,然后重新启动ssh服务
但是此方法并不适用我的系统。最后找到原因是root密码和用户pi密码设置一样,发生冲突,导致错误。解决措施:
sudo passwd pi
#修改用户密码
最后,还要说明一点,需要使用ssh [email protected] 进行登录,在root模式下进行登录。如果不行的话,记得reboot一下。
上面的准备工作完成之后,开始创建虚拟远程docekr主机,使用命令:
docker-machine create --driver generic --generic-ip-address=192.168.99.192 pi #后面写上你的远程主机的ip和给docker远程主机起一个名字pi。
好了,现在你就可以使用了docker-machine远程管理节点了。在这里说明一下,上面显示了一个错误,就是找不到树莓派OS,这个目前原因还没有找到。不过在其他远程Linux是可以正常通信的。
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 显示帮助信息
最近我整理了整套《JAVA核心知识点总结》,说实话 ,作为一名Java程序员,不论你需不需要面试都应该好好看下这份资料。拿到手总是不亏的~我的不少粉丝也因此拿到腾讯字节快手等公司的Offer
进【Java进阶之路群】,找管理员获取哦-!