Mac 版 Docker 也是由 Docker 公司提供的一個產(chǎn)品。
咱們大可以放心使用 Docker,而無須先成為一個內(nèi)核工程師,也不必通過很極客的方法將 Docker 安裝到 Mac。
Mac 版 Docker 是由 Docker 公司基于社區(qū)版的 Docker 提供的一個產(chǎn)品。這意味著在筆記本上安裝單引擎版本的 Docker 是非常簡單的。
但是同時,這也意味著 Mac 版 Docker 并不是為生產(chǎn)環(huán)境而設(shè)計(jì)的。如果你聽說過 boot2docker,那么 Mac 版 Docker 就是一個流暢、簡單并且穩(wěn)定版的 boot2docker。
對于 Mac 版 Docker 來說,提供基于 Mac 原生操作系統(tǒng)中 Darwin 內(nèi)核的 Docker 引擎沒有什么意義。
所以在 Mac 版 Docker 當(dāng)中,Docker daemon 是運(yùn)行在一個輕量級的 Linux VM 之上的。
Mac 版 Docker 通過對外提供 daemon 和 API 的方式與 Mac 環(huán)境實(shí)現(xiàn)無縫集成。
這意味著讀者可以在 Mac 上打開終端并直接使用 Docker 命令。
盡管在 Mac 上實(shí)現(xiàn)了無縫集成,還是要謹(jǐn)記 Mac 版 Docker 底層是基于 Linux VM 運(yùn)行的,所以說 Mac 版 Docker 只能運(yùn)行基于 Linux 的 Docker 容器。
不過這樣已經(jīng)很好了,因?yàn)榇蟛糠秩萜鲗?shí)際上都是基于 Linux 的。
下圖展示了 Mac 版 Docker 的抽象架構(gòu)。
Mac 版 Docker 采用 HyperKit9 實(shí)現(xiàn)了一個極其輕量級的 Hypervisor。HyperKit 是基于 Xhyve Hypervisor 的。
Mac 版 Docker 也利用了 DataKit 的某些特性,并運(yùn)行了一個高度優(yōu)化后的 Linux 發(fā)行版 Moby(基于 Alpine Linux)。
接下來開始安裝 Mac 版 Docker。
⒈ 打開瀏覽器,訪問Docker的下載頁面(https://www.docker.com/products/docker-desktop),然后單擊 Download for Mac 按鈕。
⒉ 頁面會跳轉(zhuǎn)到 Docker 商店,需要讀者使用自己的 Docker ID 和密碼進(jìn)行登錄。
⒊ 單擊下載鏈接 Get Docker CE。
Mac 版 Docker 分為兩個版本:穩(wěn)定版(Stable)和搶鮮版(Edge)。搶鮮版包含一些新特性,但是并不保證穩(wěn)定運(yùn)行。
單擊鏈接后,會下載 Docker.dmg 安裝包。
⒋ 運(yùn)行上一步中下載的 Docker.dmg 文件。將代表 Docker 的鯨魚圖標(biāo)拖拽到應(yīng)用文件夾(Application folder)中。
⒌ 打開應(yīng)用文件夾(可能會自動打開)并且雙擊 Docker 應(yīng)用圖標(biāo)來啟動 Docker。可能需要確認(rèn)是否運(yùn)行,因?yàn)檫@是從互聯(lián)網(wǎng)下載的應(yīng)用程序。
⒍ 輸入 Mac 用戶密碼,這樣安裝程序可以獲取到創(chuàng)建組件所需的權(quán)限。
⒎ Docker daemon 進(jìn)程啟動。
一個活動的鯨魚圖標(biāo)會在屏幕上方狀態(tài)欄中出現(xiàn)。一旦 Docker 成功運(yùn)行,鯨魚圖標(biāo)就靜止了。可以單擊鯨魚圖標(biāo)來管理 DfM。
DfM 現(xiàn)在已經(jīng)安裝完成,讀者可以打開一個終端,并運(yùn)行一些常用的 Docker 指令。
嘗試運(yùn)行下面的命令。
$ 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。這是因?yàn)?daemon 是基于前文提到過的 Linux VM 運(yùn)行的。
Client 組件是原生的 Mac 應(yīng)用,運(yùn)行在 Mac 操作系統(tǒng) Darwin 內(nèi)核之上(OS/Arch: darwin/amd64)。
除此之外,還需要注意當(dāng)前 Docker 版本是一個實(shí)驗(yàn)性質(zhì)的版本(Experimental: true)。這是因?yàn)樗菗岝r版,搶鮮版中開啟了一些實(shí)驗(yàn)特性。
運(yùn)行其他 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 引擎(客戶端以及服務(wù)端守護(hù)程序)、Docker Compose、Docker machine 以及 Notary 命令行。
下面的 3 條命令展示了如何確認(rèn)這些組件是否成功安裝,以及組件的版本信息。
$ 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