Mac 版 Docker 也是由 Docker 公司提供的一個產品。
咱們大可以放心使用 Docker,而無須先成為一個內核工程師,也不必通過很極客的方法將 Docker 安裝到 Mac。
Mac 版 Docker 是由 Docker 公司基于社區版的 Docker 提供的一個產品。這意味著在筆記本上安裝單引擎版本的 Docker 是非常簡單的。
但是同時,這也意味著 Mac 版 Docker 并不是為生產環境而設計的。如果你聽說過 boot2docker,那么 Mac 版 Docker 就是一個流暢、簡單并且穩定版的 boot2docker。
對于 Mac 版 Docker 來說,提供基于 Mac 原生操作系統中 Darwin 內核的 Docker 引擎沒有什么意義。
所以在 Mac 版 Docker 當中,Docker daemon 是運行在一個輕量級的 Linux VM 之上的。
Mac 版 Docker 通過對外提供 daemon 和 API 的方式與 Mac 環境實現無縫集成。
這意味著讀者可以在 Mac 上打開終端并直接使用 Docker 命令。
盡管在 Mac 上實現了無縫集成,還是要謹記 Mac 版 Docker 底層是基于 Linux VM 運行的,所以說 Mac 版 Docker 只能運行基于 Linux 的 Docker 容器。
不過這樣已經很好了,因為大部分容器實際上都是基于 Linux 的。
下圖展示了 Mac 版 Docker 的抽象架構。
Mac 版 Docker 采用 HyperKit9 實現了一個極其輕量級的 Hypervisor。HyperKit 是基于 Xhyve Hypervisor 的。
Mac 版 Docker 也利用了 DataKit 的某些特性,并運行了一個高度優化后的 Linux 發行版 Moby(基于 Alpine Linux)。
接下來開始安裝 Mac 版 Docker。
⒈ 打開瀏覽器,訪問Docker的下載頁面(https://www.docker.com/products/docker-desktop),然后單擊 Download for Mac 按鈕。
⒉ 頁面會跳轉到 Docker 商店,需要讀者使用自己的 Docker ID 和密碼進行登錄。
⒊ 單擊下載鏈接 Get Docker CE。
Mac 版 Docker 分為兩個版本:穩定版(Stable)和搶鮮版(Edge)。搶鮮版包含一些新特性,但是并不保證穩定運行。
單擊鏈接后,會下載 Docker.dmg 安裝包。
⒋ 運行上一步中下載的 Docker.dmg 文件。將代表 Docker 的鯨魚圖標拖拽到應用文件夾(Application folder)中。
⒌ 打開應用文件夾(可能會自動打開)并且雙擊 Docker 應用圖標來啟動 Docker。可能需要確認是否運行,因為這是從互聯網下載的應用程序。
⒍ 輸入 Mac 用戶密碼,這樣安裝程序可以獲取到創建組件所需的權限。
⒎ Docker daemon 進程啟動。
一個活動的鯨魚圖標會在屏幕上方狀態欄中出現。一旦 Docker 成功運行,鯨魚圖標就靜止了。可以單擊鯨魚圖標來管理 DfM。
DfM 現在已經安裝完成,讀者可以打開一個終端,并運行一些常用的 Docker 指令。
嘗試運行下面的命令。
$ docker version
Client:
Version: 17.05.0-ce
API version: 1.29
Go version: go1.7.5
Git commit: 89658be
Built: Thu May 4 21:43:09 2017
OS/Arch: darwin/amd64
Server:
Version: 17.05.0-ce
API version: 1.29 (minimum version 1.12)
Go version: go1.7.5
Git commit: 89658be
Built: Thu May 4 21:43:09 2017
OS/Arch: linux/amd64
Experimental: true
注意,Server 的 OS/Arch 屬性中顯示的值是 linux/amd64。這是因為 daemon 是基于前文提到過的 Linux VM 運行的。
Client 組件是原生的 Mac 應用,運行在 Mac 操作系統 Darwin 內核之上(OS/Arch: darwin/amd64)。
除此之外,還需要注意當前 Docker 版本是一個實驗性質的版本(Experimental: true)。這是因為它是搶鮮版,搶鮮版中開啟了一些實驗特性。
運行其他 Docker 命令。
$ docker --version
Docker version 17.05.0-ce, build 89658be
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Mac 版 Docker 安裝了 Docker 引擎(客戶端以及服務端守護程序)、Docker Compose、Docker machine 以及 Notary 命令行。
下面的 3 條命令展示了如何確認這些組件是否成功安裝,以及組件的版本信息。
$ docker --version
Docker version 17.05.0-ce, build 89658be
$ docker-compose --version
docker-compose version 1.13.0, build 1719ceb
$ docker-machine --version
docker-machine version 0.11.0, build 5b27455
$ notary version
notary
Version: 0.4.3
Git commit: 9211198