Docker 初探 (6) - Docker Machine
参考资料:
前言
Docker GetStarted Swarm 官方文档中,为了在单机上演示如何搭建 Docker Swarm 而引入了 Docker Machine,并在其中穿插了虚拟 shell 环境的内容,个人认为这部分内容干扰了集群搭建的关键信息。
Docker Machine
通过 Docker Machine 可实现在虚拟主机或远程主机上安装 Docker 引擎,并使用 docker-machine 命令行对其进行管理的工具。Docker Machine 在 Docker for Mac 和 Docker for Windows 上都已经预装,Linux 系统需要手动安装。
Docker Machine 有以下两种常用场景:
- 有些老的桌面系统主机如
Windows和Mac,它们不满足预装Docker for Windows或Docker for Mac的条件,但我想要在这些系统上运行Docker。 - 我想要在远程主机系统上运行统一的
Docker image。
docker 守护进程由服务端和客户端两部分组成,服务端发布 REST API 接口开放给客户端,docker CLI 客户端通过 REST API 接口与服务端通信。
无论你的管理主机是 Windows,Mac 还是 Linux,都可以安装 Docker Machine 并使用 docker-machine 命令统一管理大量的 Docker 从机。通常,你会将 Docker Machine 安装到本地主机,Docker Machine 包含 docker-machine 命令行工具和 Docker 引擎的客户端 docker 命令行工具。可通过 docker-machine 命令行工具在本地主机的虚拟环境或云主机上安装 Docker 引擎,它将自动创建虚拟环境,安装 Docker 引擎,配置好 docker 客户端,每一个被管理的从机由 Docker host(运行了 Docker 引擎的主机) 和一个配置好的客户端组成,它们通常又被称为 **_”machines”_**。
意即,如果仅仅安装
Docker Machine,将不会在本机安装Docker引擎,仅仅安装其客户端管理工具
在 Linux 上安装 Docker Machine
首先在 docker/machine release page 页面上找到最新的发布版本号,并修改以下命令对应的位置
1 | $ base=https://github.com/docker/machine/releases/download/v0.14.0 && |
打印 docker-machine 的版本以确认安装完成:
1 | $ docker-machine --version |
以非 driver 方式添加主机
Docker Machine 为众多的虚拟机和云服务商提供了 driver,以通过这些驱动在不同的服务商主机上安装 Docker 引擎,但也提供了一种 url 的方式来添加已有 docker 主机:
1 | $ docker-machine create --driver none --url=tcp://50.134.234.20:2376 custombox |
此后,便可通过 docker-machine 远程管理列表中的所有主机,可通过 docker-machine ssh custombox 向该主机发送指令,例如:
1 | $ docker-machine ssh custombox "docker container ls" |
如果出于某些原因出现 ssh 连接的问题,那么可以改用系统本地的 ssh 进行通信,加入
--native-ssh参数即可:docker-machine --native-ssh ssh
配置虚拟 Docker 主机的 shell 环境
除了通过 docker-machine ssh 向 Docker 主机发送命令之外,还可以使用 docker-machine env <machine> 配置一个虚拟 shell 环境直接与目标主机的 Docker 守护进程通信。这样,便可访问执行 docker-machine 的本地主机的资源,如 docker-compose.yml 文件:
1 | $ docker-machine env custombox |
执行输出结果返回的最后一行命令:
1 | eval $(docker-machine env myvm1) |
执行 docker-machine ls 验证 custombox 变成了活动主机,Active 一栏的 * 指示了该状态:
1 | $ docker-machine ls |
清除 docker-machine 的 shell 变量设置
1 | eval $(docker-machine env -u) |
该命令退出与目标主机建立的虚拟 shell 环境并回到之前的环境中。
有关 Docker Machine 更多详情参考 Docker Machine。