Docker三剑客之Machine
What is Docker Machine?Docker Machine是一款可以通过Docker Machine命令在虚拟机上安装Docker引擎和管理主机的工具。Machine可以在本地mac后者Windows、数据中心、或者如Azure, AWS, or Digital Ocean等云环境下创建docker主机。
使用Docker Machine命令可以启动、检查、停止和重启主机等,升级Docker客户端和守护进程,以及配置Docker客户端与主机进行通信。
Why should I use it?
Docker Machine 使你能够在各种 Linux 上配置多个远程 Docker 宿主机。此外,Machine 允许你在较早的 Mac 或 Windows 系统上运行 Docker,如上一主题所述。Docker Machine 有这两个广泛的用例。
[*] 我有一个较旧的桌面系统,并希望在 Mac 或 Windows 上运行 Docker
http://s1.运维网.com/images/20180907/1536292655524310.png
如果你主要在不符合新的 Docker for Mac 和 Docker for Windows 应用程序的旧 Mac 或 Windows 笔记本电脑或台式机上工作,则需要 Docker Machine 来在本地“运行Docker”(即Docker Engine)。在 Mac 或 Windows box 中使用 Docker Toolbox 安装程序安装 Docker Machine 将为 Docker Engine 配置一个本地的虚拟机,使你能够连接它、并运行 docker 命令。
[*] 我想在远程系统上配置 Docker 宿主机
http://s1.运维网.com/images/20180907/1536292759922345.png
Docker Engine Linux 系统上原生地运行。如果你有一个 Linux 作为你的主系统,并且想要运行 docker 命令,所有你需要做的就是下载并安装 Docker Engine 。然而,如果你想要在网络上、云中甚至本地配置多个 Docker 宿主机有一个有效的方式,你需要 Docker Machine。
无论你的主系统是 Mac、Windows 还是 Linux,你都可以在其上安装 Docker Machine,并使用 docker-machine 命令来配置和管理大量的 Docker 宿主机。它会自动创建宿主机、在其上安装 Docker Engine 、然后配置 docker 客户端。每个被管理的宿主机(“machine”)是 Docker 宿主机和配置好的客户端的结合。
Docker Engine 和 Docker Machine 有什么区别?
当人们说“Docker”时,他们通常是指 Docker Engine,它是一个客户端 - 服务器应用程序,由 Docker 守护进程、一个REST API指定与守护进程交互的接口、和一个命令行接口(CLI)与守护进程通信(通过封装REST API)。Docker Engine 从 CLI 中接受docker 命令,例如 docker run 、docker ps 来列出正在运行的容器、docker images 来列出镜像,等等。
http://s1.运维网.com/images/20180907/1536292871409317.png
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”。
http://s1.运维网.com/images/20180907/1536292912833310.png
安装Docker Machine
Docker Machine 可以在多种操作系统平台上安装,包括 Linux、Mac OS,以及Windows。
Linux下安装
直接下载Docker Machine二进制文件即可。
#base=https://github.com/docker/machine/releases/download/v0.14.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
sudo install /tmp/docker-machine /usr/local/bin/docker-machine 安装查看安装信息:
http://s1.运维网.com/images/20180907/1536285919568229.png
使用
远程创建Docker引擎
Docker Machine 支持多种后端驱动,包括虚拟机、本地主机和云平台等。
通过docker machine在远程主机中创建docker环境,创建动作包括:ssh登录远程主机、安装docker、拷贝证书、配置docker daemon、启动docker。因此,在使用前需要配置ssh密钥认证
使用 generic 类型的驱动,创建一台 Docker 主机,命名为 centos7-3。
# docker-machine create --driver generic --generic-ip-address=192.168.39.102 centos7-3注意:主机名为centos7-3,其ip为192.168.39.102http://s1.运维网.com/images/20180907/1536289735758929.png
创建主机成功后,可以通过 env 命令来让后续操作对象都是目标主机。
# docker-machine env centos7-3 http://s1.运维网.com/images/20180907/1536289825152379.png
远程登陆centos7-3,查看安装情况:
http://s1.运维网.com/images/20180907/1536289930582925.png
查看machine下的服务器列表:
# docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
centos7-3 - generic Running tcp://192.168.39.102:2376 v18.06.1-ce
centos7-4 * generic Running tcp://192.168.39.103:2376 v18.06.1-ce 可以通过 SSH 登录到主机:
# docker-machine ssh centos7-3 通过docker machine创建的docker主机时,在环境下会多处docker.service.d文件夹,该文件夹下只有一个配置文件10-machine.conf:
# cat /etc/systemd/system/docker.service.d/10-machine.confhttp://s1.运维网.com/images/20180907/1536293701824464.png
同时生成证书文件:
# ls /etc/docker/
ca.pem key.json server-key.pemserver.pemhttp://s1.运维网.com/images/20180907/1536293841597375.png
更多场景
通过docker-machine可以在本地创建docker主机;可以创建一个带有docker主机的虚拟机;也可以在阿里云等云环境中创建docker主机。官方文档中有更加详细的使用说明。
Docker Machine常用命令
[*] active 查看活跃的 Docker 主机
[*] config 输出连接的配置信息
[*] create 创建一个 Docker 主机
[*] env 显示连接到某个主机需要的环境变量
[*] inspect 输出主机更多信息
[*] ip 获取主机地址
[*] kill 停止某个主机
[*] ls 列出所有管理的主机
[*] provision 重新设置一个已存在的主机
[*] regenerate-certs 为某个主机重新生成 TLS 认证信息
[*] restart 重启主机
[*] rm 删除某台主机
[*] ssh SSH 到主机上执行命令
[*] scp 在主机之间复制文件
[*] mount 挂载主机目录到本地
[*] start 启动一个主机
[*] status 查看主机状态
[*] stop 停止一个主机
[*] upgrade 更新主机 Docker 版本为最新
[*] url 获取主机的 URL
[*] version 输出 docker-machine 版本信息
[*] help 输出帮助信息
每个参数又都是有help的,可以通过:
docker-machine-h 查看具体帮助信息。
支持驱动
通过 -d 选项可以选择支持的驱动类型。
[*] amazonec2
[*] azure
[*] digitalocean
[*] exoscale
[*] generic
[*] none
[*] openstack
[*] rackspace
[*] softlayer
[*] virtualbox
[*] vmwarevcloudair
[*] vmwarevsphere
参考资料:
https://docs.docker.com/machine/overview/
http://blog.运维网.com/ityouknow/2092774
页:
[1]