什么是Docker Machine?
Docker Machine 是Docker官方编排项目之一,使用go语言编写的,使用不同引擎在多种平台上快速的安装Docker环境,开源地址:https://github.com/docker/machine。
Docker Machine 是一个工具,它允许你在虚拟宿主机上安装Docker,并使用docker-machine命令管理这个宿主机,可以使用Docker Machine在本地的MAC或者windows Box、公司网络,数据中心或者AWS这样的云提供商上创建docker。
使用docker-machine命令,可以启动、审查、停止、重启托管的docker 也可以升级Docker客户端和守护程序并配置docker客户端和宿主机通信。
Docker Machine 也可以集中管理所以得docker主机。
为什么要使用Docker Machine?
Docker Machine 使你能够在各种 Linux 上配置多个远程 Docker 宿主机。此外,Machine 允许你在较早的 Mac 或 Windows 系统上运行 Docker
Docker Machine 有这两个广泛的用例。
我有一个较旧的桌面系统,并希望在 Mac 或 Windows 上运行 Docker
如果你主要在不符合新的 Docker for Mac 和 Docker for Windows 应用程序的旧 Mac 或 Windows 笔记本电脑或台式机上工作,则需要 Docker Machine 来在本地“运行Docker”(即Docker Engine)。在 Mac 或 Windows Box 中使用 Docker ToolBox 安装程序安装 Docker Machine 将为 Docker Engine 配置一个本地的虚拟机,使你 能够连接它、并运行 docker 命令。
我想在远程系统上配置 Docker 宿主机
Docker Engine Linux 系统上原生地运行。如果你有一个 Linux 作为你的主系统,并且想要运行 docker 命令,所有你需要做的就是下载并安装 Docker Engine 。然而,如果你想要在网络上、云中甚至本地配置多个 Docker 宿主机有一个有效的方式,你需要 Docker Machine。
无论你的主系统是 Mac、Windows 还是 Linux,你都可以在其上安装 Docker Machine,并使用 docker-machine 命令来配置和管理大量的 Docker 宿主机。它会自动创建宿主机、在其上安装 Docker Engine 、然后配置 docker 客户端。每个被管理的宿主机(“machine”)是 Docker 宿主机和配置好的客户端的结合。
Docker和Docker Machine之间的区别
当人们说“Docker”时,他们通常是指 Docker Engine,它是一个客户端 - 服务器应用程序,由 Docker 守护进程、一个REST API指定与守护进程交互的接口、和一个命令行接口(CLI)与守护进程通信(通过封装REST API)。Docker Engine 从 CLI 中接受docker 命令,例如 docker run 、docker ps 来列出正在运行的容器、docker images 来列出镜像,等等。
Docker Machine 是一个用于配置和管理你的宿主机(上面具有 Docker Engine 的主机)的工具。通常,你在你的本地系统上安装 Docker Machine。Docker Machine有自己的命令行客户端 docker-machine 和 Docker Engine 客户端 docker。你可以使用 Machine 在一个或多个虚拟系统上安装 Docker Engine。
这些虚拟系统可以是本地的(就像你在 Mac 或 Windows 上使用 Machine 在 VirtualBox 中安装和运行 Docker Engine 一样)或远程的(就像你使用 Machine 在云提供商上 provision Dockerized 宿主机一样)。Dockerized 宿主机本身可以认为是,且有时就称为,被管理的“machines”。
安装
Docker Mechine 可以在多种平台上安装使用,包括Linux 、MacOS已经windows.Docker Mechine 安装非常的简单:GitHub地址:https://github.com/docker/machine/releases/ 里面有安装教程。
以linux为例:
安装docker-machine前提是该宿主机上需要安装docker
命令:
curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-
(
u
n
a
m
e
−
s
)
−
(uname -s)-
(uname−s)−(uname -m) >/tmp/docker-machine (下载docker-machine,目前版本最高的是0.16.2)
chmod +x /tmp/docker-machine(给现在的文件赋权限)
cp /tmp/docker-machine /usr/local/bin/docker-machine(把下载的额machine文件复制)
查看版本
参数
应用
通过Docker Machine 创建docker(我用了三台机器)
机器ip:manager:172.16.9.115 node_1:172.16.9.118 node_2:172.16.9.169
准备工作,先让主主机与节点主机之间可以免密操作,怎么操作参考
https://blog.csdn.net/u013415591/article/details/81943189
保证主主机访问远程节点主机时不需要密码选项
例如:
分别执行:
docker-machine create --driver generic --generic-ip-address=172.16.9.118 docker118
docker-machine create --driver generic --generic-ip-address=172.16.9.169 docker169
docker-machine ls
进入其中一个节点docker环境
docker-machine env docker118
命令:eval $(docker-machine env docker118) 切换到118节点的服务器上docker环境
这个时候再看一下,已成功切换到118节点的docker环境上了
有个显示问题:我们在docker-machine上切换环境,当前shell并不能反映我们是否切换到对应的环境了;
这样一来在主机特别多的情况,很容易出错;
我们可以使用该命令:
docker-machine ssh docker118