翻译一下这个文章,才会对 Docker Machine 有更深入的认知!本文基于 官方文档,翻译来自 Google,偷懒一下。
Docker Machine 可以用于:
- 在 Mac 或 Windows 上安装并运行 Docker
- 配置和管理多个远程Docker主机
- 提供集群
Docker Machine 是一种可让您在虚拟主机上安装 Docker Engine 的工具,并使用docker-machine
命令管理主机。您可以使用 Machine 在您的本地 Mac 或 Windows boxs,公司网络,数据中心或 Azure 提供商(如 Azure,AWS 或 Digital Ocean)上创建 Docker 主机。
使用docker-machine
命令,您可以启动,检查,停止并重新启动托管主机,升级 Docker 客户端和守护程序,并配置 Docker 客户端与主机通信。
将 Machine CLI 指向正在运行的托管主机,您可以直接运行docker
命令到该主机上。例如,运行docker-machine env default
指向一个名为default
的主机,按照屏幕上的说明完成env
setup,并运行docker ps
,docker run hello-world
等等。
在 Docker v1.12 之前 Machine 是在 Mac 或 Windows 上运行 Docker 的唯一方法。从 Beta 版程序和 Docker v1.12 开始,Docker for Mac 和 Docker for Windows 可作为本地应用程序使用,并且是在在较新的台式机和笔记本电脑上的更好选择。我们鼓励您尝试这些新应用。 Docker for Mac 和Docker for Windows 的安装程序包括 Docker Machine,以及 Docker Compose。
如果您不确定从何处开始,请参阅 Get Started with Docker,它会指导您完成 Docker 的简短的端到端教程。
Docker Machine 使您能够在各种各样的 Linux上 配置多个远程 Docker 主机。
此外,Machine 允许您在较旧的 Mac 或 Windows 系统上运行 Docker,如上一主题所述。
Docker Machine 有两种广泛的用例。
我有一个较旧的桌面系统,并希望在 Mac 或 Windows 上运行 Docker
如果您主要在较旧的 Mac 或 Windows 笔记本电脑或台式机上工作,这些笔记本电脑或台式机不符合新的 Docker for Mac 和 Docker for Windows 应用程序的要求,那么您需要 Docker Machine 才能在本地“运行 Docker”(即 Docker Engine )。
使用 Docker Toolbox 安装程序在 Mac 或 Windows box 上安装 Docker Machine 可以使用 Docker Engine 配置本地虚拟机,使您可以连接它并运行 docker 命令。
我想配置在远程系统上的 Docker 主机
Docker Engine 在 Linux 系统上本机运行。如果您有一个 Linux box 作为主要系统,并且希望运行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 以及与守护程序(通过 REST API 包装器)通信的命令行界面(CLI)客户端。Docker Engine 从 CLI 接受docker
命令,例如docker run
,docker ps
列出运行的容器,docker images
以列出镜像等。
Docker Machine 是一种用于配置和管理 Docker 化的主机(Docker Engine的主机)的工具。通常,您在本地系统上安装 Docker Machine。Docker Machine 有自己的命令行客户端docker-machine
和 Docker Engine 客户端docker
。您可以使用 Machine 在一个或多个虚拟系统上安装 Docker Engine。这些虚拟系统可以是本地的(如当您使用 Machine 在 Mac 或 Windows 上的 VirtualBox 中安装和运行 Docker Engine)或远程(当您使用 Machine 在云提供商上配置 Docker 化主机时)。Docker 化主机本身可以被认为是有时被称为托管的“machines”。
如有出入,还望指正。
镜像 是一个轻量级,独立的可执行包,包括运行一段软件所需的一切,包括代码,运行时,库,环境变量和配置文件。
容器 是镜像的运行时实例,即 实际执行时镜像在内存中的内容。默认情况下,它与主机环境完全隔离,只能访问主机文件和端口(如果配置为这样做)。容器在主机的内核上运行应用程序。
Docker 通常是指Docker Engine,它是由 Docker daemon 守护进程、一个 REST API 接口、一个命令行接口客户端 CLI 组成的客户端-服务器应用程序。它接受来自命令行接口客户端 CLI 的docker
命令。
Docker Machine是用来配置和管理Docker Engine的工具。上面也说了,Docker Machine 主要有两个用途:一是为了能在旧的 Mac 和 Windows 系统上使用 Dokcer。二是为了可以管理远程的 Docker。
要知道,Docker Engine是只能在Linux内核上运行的。
为什么 Docker Machine 可以使得在旧的 Mac 和 Windows 系统上也能使用 Docker 呢?因为,安装 Docker Toolbox 会安装 Docker Machine 和 Virtual Box 虚拟机,它会配置一个Docker Engine到一个虚拟机里的主机上(Linux内核,默认名字是default,又称托管主机),后续 Docker 容器就是运行在这个托管主机里的 Docker Engine 之上。
将 Machine CLI 指向正在运行的托管主机,就可以直接该运行docker
命令到该主机上。这里貌似东西不少:docker-machine env default
会显示 default 主机的环境信息以及对应的配置命令指引:
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/Eason/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
Run this command to configure your shell:
eval "$(docker-machine env default)"
提示很明白了,在 SHELL 里运行 eval "$(docker-machine env default)
就可以把当前 Machine CLI 指向 default 主机了。好处就是,当我们有多个主机时,这样一行命令就能切换环境指向不同的主机,然后后续运行的docker
命名也是运行到对应的 Docker Enigne 上。
注:Docker for Mac 和 Docker for Windows 以及 (https://docs.docker.com/toolbox/overview/) 都是自带 Docker Machine 工具的。
这一节的个人理解,也不知道我写得大家看不看得懂。其实主要辨析点就是:Container容器是Image镜像运行在内存中的实例,Container容器要运行在Docker Engine之上,然而Docker Engine仅限运行在 Linux 内核之上。Docker Machie是配置和管理Docker Engine的工具,并且可以为旧版的 Mac 和 Windows 系统提供Docker Engine的运行环境。