上篇文章Docker(四):Docker 三剑客之 Docker Compose 介绍了 Docker Compose,这篇文章咱们来了解 Docker Machine 。html
Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。linux
Docker Machine 是一个工具,它容许你在虚拟宿主机上安装 Docker Engine ,并使用 docker-machine 命令管理这些宿主机。你可使用 Machine 在你本地的 Mac 或 Windows box、公司网络、数据中心、或像 AWS 或 Digital Ocean 这样的云提供商上建立 Docker 宿主机。git
使用 docker-machine 命令,你能够启动、审查、中止和从新启动托管的宿主机、升级 Docker 客户端和守护程序、并配置 Docker 客户端与你的宿主机通讯。github
Docker Machine 使你可以在各类 Linux 上配置多个远程 Docker 宿主机。
此外,Machine 容许你在较早的 Mac 或 Windows 系统上运行 Docker,如上一主题所述。
Docker Machine 有这两个普遍的用例。docker
若是你主要在不符合新的 Docker for Mac 和 Docker for Windows 应用程序的旧 Mac 或 Windows 笔记本电脑或台式机上工做,则须要 Docker Machine 来在本地“运行Docker”(即Docker Engine)。在 Mac 或 Windows box 中使用 Docker Toolbox 安装程序安装 Docker Machine 将为 Docker Engine 配置一个本地的虚拟机,使你可以链接它、并运行 docker 命令。shell
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 Engine,它是一个客户端 - 服务器应用程序,由 Docker 守护进程、一个REST API指定与守护进程交互的接口、和一个命令行接口(CLI)与守护进程通讯(经过封装REST API)。Docker Engine 从 CLI 中接受docker 命令,例如 docker run <image>、docker ps 来列出正在运行的容器、docker images 来列出镜像,等等。ssh
Docker Machine 是一个用于配置和管理你的宿主机(上面具备 Docker Engine 的主机)的工具。一般,你在你的本地系统上安装 Docker Machine。Docker Machine有本身的命令行客户端 docker-machine 和 Docker Engine 客户端 docker。你可使用 Machine 在一个或多个虚拟系统上安装 Docker Engine。curl
这些虚拟系统能够是本地的(就像你在 Mac 或 Windows 上使用 Machine 在 VirtualBox 中安装和运行 Docker Engine 同样)或远程的(就像你使用 Machine 在云提供商上 provision Dockerized 宿主机同样)。Dockerized 宿主机自己能够认为是,且有时就称为,被管理的“machines”。
Docker Machine 安装很简单
curl -L https://github.com/docker/machine/releases/download/v0.14.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && \ install /tmp/docker-machine /usr/local/bin/docker-machine #完成后,查看版本信息。 docker-machine -v docker-machine version 0.14.0, build 89b8332
查看是否存在可用的主机
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
建立一个主机:
$ docker-machine create --driver virtualbox default Running pre-create checks... (default) Default Boot2Docker ISO is out-of-date, downloading the latest release... (default) Latest release for github.com/boot2docker/boot2docker is v17.12.1-ce (default) Downloading C:\Users\hkrt-neo\.docker\machine\cache\boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v17.12.1-ce/boot2docker.iso... (default) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100% Creating machine... (default) Copying C:\Users\hkrt-neo\.docker\machine\cache\boot2docker.iso to C:\Users\hkrt-neo\.docker\machine\machines\default\boot2docker.iso... (default) Creating VirtualBox VM... (default) Creating SSH key... (default) Starting the VM... (default) Check network to re-create if needed... (default) Windows might ask for the permission to configure a dhcp server. Sometimes, such confirmation window is minimized in the taskbar. (default) Waiting for an IP... Waiting for machine to be running, this may take a few minutes... Detecting operating system of created instance... Waiting for SSH to be available... Detecting the provisioner... Provisioning with boot2docker... Copying certs to the local machine directory... Copying certs to the remote machine... Setting Docker configuration on the remote daemon... ...
这个命令会下载 boot2docker,基于 boot2docker 建立一个虚拟主机。boot2docker 是一个轻量级的 linux 发行版,基于专门为运行 docker 容器而设计的 Tiny Core Linux 系统,彻底从 RAM 运行,45Mb左右,启动时间约5s。
再次查看服务列表
docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default * virtualbox Running tcp://192.168.99.100:2376 v17.12.1-ce
发现已经存在一个虚拟主机
建立主机成功后,能够经过 env 命令来让后续操做对象都是目标主机。
$ docker-machine env default export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.100:2376" export DOCKER_CERT_PATH="C:\Users\hkrt-neo\.docker\machine\machines\default" export DOCKER_MACHINE_NAME="default" export COMPOSE_CONVERT_WINDOWS_PATHS="true" # Run this command to configure your shell: # eval $("D:\Program Files\Docker Toolbox\docker-machine.exe" env default)
至关于配置了一个环境变量 default,后续根据提示在命令行输入命令以后就能够操做 default 主机。
能够经过 SSH 登陆到主机
$ docker-machine ssh default docker@default:~$ docker --version Docker version 17.12.1-ce, build 7390fc6
链接到主机以后你就能够在其上使用 Docker 了,退出虚拟机使用命令:exit
//建立虚拟机 docker-machine create [OPTIONS] [arg...] //移除虚拟机 docker-machine rm [OPTIONS] [arg...] //登陆虚拟机 docker-machine ssh [arg...] //docker客户端配置环境变量 docker-machine env [OPTIONS] [arg...] //检查机子信息 docker-machine inspect //查看虚拟机列表 docker-machine ls [OPTIONS] [arg...] //查看虚拟机状态 docker-machine status [arg...] //一个虚拟机名称 //启动虚拟机 docker-machine start [arg...] //一个或多个虚拟机名称 //中止虚拟机 docker-machine stop [arg...] //一个或多个虚拟机名称 //重启虚拟机 docker-machine restart [arg...] //一个或多个虚拟机名称
更多参数请使用 docker-machine --help 命令查看。
Docker Machine 最主要有两个做用:
virtualbox 安装很麻烦,我使用的虚拟机和云主机来作实验均没有安装成功,最后使用的是 Docker 官方提供的 Windows 安装包来完成的 virtualbox 相关操做。附 virtualbox 官网:https://www.virtualbox.org/wiki/Downloads