筆者在《Docker Machine 簡(jiǎn)介》一文中簡(jiǎn)單介紹了 Docker Machine 及其基本用法,但是忽略的細(xì)節(jié)實(shí)在是太多了。比如 Docker 與 Docker Machine 的區(qū)別?又如當(dāng)我們執(zhí)行 docker-machine create 命令時(shí),Docker Machine 都做了哪些重要的事情使得我們可以遠(yuǎn)程操作 Docker daemon?這樣的遠(yuǎn)程操作安全嗎?本文將試圖解讀這些問(wèn)題。注:本文的演示環(huán)境為 Ubuntu16.04。
Docker 與 Docker Machine 的區(qū)別
Docker 是一個(gè) Client-Server 架構(gòu)的應(yīng)用,人家是有官稱(chēng)的:Docker Engine。Docker 只是大家對(duì) Docker Engine 的昵稱(chēng),當(dāng)然 Docker 還有其他的意思,比如一家公司的名稱(chēng)。簡(jiǎn)單起見(jiàn),本文中的 Docker 等同于 Docker Engine。
提到 Docker 我們必須要知道它包含了三部分內(nèi)容:
Docker daemon
一套與 Docker daemon 交互的 REST API
一個(gè)命令行客戶(hù)端
下圖很清晰的展示了它們之間的關(guān)系:
Docker Machine 則是一個(gè)安裝和管理 Docker 的工具。它有自己的命令行工具:docker-machine。