笔者在《Docker Machine 简介》一文中简单介绍了 Docker Machine 及其基本用法,但是忽略的细节实在是太多了。比如 Docker 与 Docker Machine 的区别?又如当我们执行 docker-machine create 命令时,Docker Machine 都做了哪些重要的事情使得我们可以远程操作 Docker daemon?这样的远程操作安全吗?本文将试图解读这些问题。注:本文的演示环境为 Ubuntu16.04。
Docker 与 Docker Machine 的区别
Docker 是一个 Client-Server 架构的应用,人家是有官称的:Docker Engine。Docker 只是大家对 Docker Engine 的昵称,当然 Docker 还有其他的意思,比如一家公司的名称。简单起见,本文中的 Docker 等同于 Docker Engine。
提到 Docker 我们必须要知道它包含了三部分内容:
Docker daemon
一套与 Docker daemon 交互的 REST API
一个命令行客户端
下图很清晰的展示了它们之间的关系:
Docker Machine 则是一个安装和管理 Docker 的工具。它有自己的命令行工具:docker-machine。