Docker學習筆記之在 Windows 和 Mac 中使用 Docker

0x00 概述

對於開發來講,Windows 和 macOS 是更爲常見和經常使用的系統,因此也頗有必要了解在 Windows 和 macOS 中使用 Docker 的方法。很幸運的是,Docker 的官方對這兩個系統提供了強有力的支持,咱們能夠很輕鬆的在這兩個系統中運行 Docker。在這一小節中,咱們就來了解一下 Docker 在 Windows 和 macOS 中安裝的方式以及運行的原理。docker

 

0x01 Docker Desktop

在大多數狀況下,咱們的開發工做是在 Windows 或 macOS 這兩個操做系統中進行的,既然 Docker 是咱們用來解決開發、測試到運維整條產品線的工具,天然支持這兩個系統是不可或缺的功能。json

如同封裝 Docker 爲咱們提供了輕鬆的虛擬化運行環境同樣,Docker 在 Windows 和 macOS 中的安裝也是極易完成的。Docker 官方爲 Windows 和 macOS 系統單獨開闢了一條產品線,名爲 Docker Desktop,其定位是快速爲開發者提供在 Windows 和 macOS 中運行 Docker 環境的工具。windows

Docker Desktop 實現容器化與 Docker Engine 是一致的,這就保證了咱們在 Windows 和 macOS 中開發所使用的環境能夠很輕鬆的轉移到其餘的 Docker 實例中,不論這個 Docker 實例是運行在 Windows、macOS 亦或是 Linux。api

Docker Desktop 產品線包含兩個軟件,也就是針對 Windows 系統的 Docker for Windows 和針對 macOS 的 Docker for Mac。安全

 

0x02 安裝 Docker Desktop

在安裝 Docker for Windows 和 Docker for Mac 以前,咱們依然要了解一下兩款軟件對操做系統及軟硬件的要求,只有達到了這些要求,咱們才能順利的安裝上 Docker for Windows 和 Docker for Mac。網絡

對於 Windows 系統來講,安裝 Docker for Windows 須要符合如下條件:運維

  • 必須使用 Windows 10 Pro ( 專業版 )
  • 必須使用 64 bit 版本的 Windows

對於 macOS 系統來講,安裝 Docker for Mac 須要符合如下條件:工具

  • Mac 硬件必須爲 2010 年之後的型號
  • 必須使用 macOS El Capitan 10.11 及之後的版本

另外,虛擬機軟件 VirtualBox 與 Docker Desktop 兼容性不佳,建議在安裝 Docker for Windows 和 Docker for Mac 以前先卸載 VirtualBox。測試

在確認系統可以支持 Docker Desktop 以後,咱們就從 Docker 官方網站下載這兩個軟件的安裝程序,這裏直接附上 Docker Store 的下載連接,供你們直接下載:網站

安裝 Docker for Windows 和 Docker for Mac 的方法十分簡單,按 Windows 或 macOS 常見的軟件安裝方式安裝便可。

 

0x03 啓動 Docker

像 Linux 中同樣,咱們要在 Windows 和 macOS 中使用 Docker 前,咱們須要先將 Docker 服務啓動起來。在這兩個系統中,咱們須要啓動的就是剛纔咱們安裝的 Docker for Windows 和 Docker for Mac 了。

啓動兩個軟件的方式很簡單,咱們只須要經過操做系統的快捷訪問功能查找到 Docker for Windows 或 Docker for Mac 並啓動便可。

打開軟件以後,咱們會在 Windows 的任務欄或者 macOS 的狀態欄中看到 Docker 的大鯨魚圖標。

Docker for Windows 或 Docker for Mac 在啓動時,這隻大鯨魚上的集裝箱會一直閃動,這說明 Docker 程序正在部署 docker daemon 所須要的一些環境並執行 docker daemon 的啓動。當集裝箱再也不閃動,就說明 Docker 服務已經準備就緒,咱們就能夠在 Windows 和 macOS 中使用 Docker 了。

Docker Desktop 爲咱們在 Windows 和 macOS 中使用 Docker 提供了與 Linux 中幾乎一致的方法,咱們只須要打開 Windows 中的 PowerShell 得到 macOS 中的 Terminal,亦或者 Git Bash、Cmder、iTerm 等控制檯類軟件,輸入 docker 命令便可。

使用 docker version 可以看到 Docker 客戶端的信息,咱們能夠在這裏發現程序運行的平臺:

$ docker version Client: ## ...... OS/Arch:  windows/amd64 ## ......

 

0x04 Docker Desktop 的實現原理

經過以前小節的介紹,咱們知道 Docker 的核心功能,也就是容器實現,是基於 Linux 內核中 Namespaces、CGroups 等功能的。那麼大致上能夠說,Docker 是依賴於 Linux 而存在的。那麼問題來了,Docker Desktop 是如何實現讓咱們在 Windows 和 macOS 中如此順暢的使用 Docker 的呢?

其實 Docker Desktop 的實現邏輯很簡單:既然 Windows 和 macOS 中沒有 Docker 可以利用的 Linux 環境,那麼咱們生造一個 Linux 環境就行啦!Docker for Windows 和 Docker for Mac 正是這麼實現的。

因爲虛擬化在雲計算時代的普遍使用,Windows 和 MacOS 也將虛擬化引入到了系統自己的實現中,這其中就包含了以前咱們所提到的經過 Hypervisor 實現虛擬化的功能。在 Windows 中,咱們能夠經過 Hyper-V 實現虛擬化,而在 macOS 中,咱們能夠經過 HyperKit 實現虛擬化。

Docker for Windows 和 Docker for Mac 這裏利用了這兩個操做系統提供的功能來搭建一個虛擬 Linux 系統,並在其之上安裝和運行 docker daemon。

除了搭建 Linux 系統並運行 docker daemon 以外,Docker Desktop 系列最突出的一項功能就是咱們可以直接經過 PowerShell、Terminal 這類的控制檯軟件在 Windows 和 macOS 中直接操做虛擬 Linux 系統中運行的 docker daemon。

實現這個功能得益於 docker daemon 對外提供的操做過程並非複雜且領域性強的 IPC 等方式,而是通用的 RESTful Api 的形式。也就是說,Docker Desktop 只要實現 Windows 和 macOS 中的客戶端,就可以直接利用 Hypervisor 的網絡支持與虛擬 Linux 系統中的 docker daemon 進行通信,並對它進行控制。

這其實就是咱們以前所提到 docker daemon 使用 RESTful Api 做爲控制方式的優點體現了。

 

 0x05 主機文件掛載

控制可以直接在主機操做系統中進行,給咱們使用 Docker Desktop 系列軟件提供了極大的方便。除此以外,文件的掛載也是 Docker Desktop 所提供的大幅簡化咱們工做效率且簡化使用的功能之一。

以前咱們談到了,Docker 容器中可以經過數據卷的方式掛載宿主操做系統中的文件或目錄,宿主操做系統在 Windows 和 macOS 環境下的 Docker Desktop 中,指的是虛擬的 Linux 系統。

固然,若是隻能從虛擬的 Linux 系統中進行掛載,顯然不足以達到咱們的指望,由於最方便的方式必然是直接從 Windows 和 macOS 裏掛載文件了。

要實現咱們所指望的效果,也就是 Docker 容器直接掛載主機系統的目錄,咱們能夠先將目錄掛載到虛擬 Linux 系統上,再利用 Docker 掛載到容器之中。這個過程被集成在了 Docker Desktop 系列軟件中,咱們不須要人工進行任何操做,整個過程已經實現了自動化。

Docker Desktop 對 Windows 和 macOS 到虛擬 Linux 系統,再到 Docker 容器中的掛載進行了實現,咱們只須要直接選擇可以被掛載的主機目錄 ( 這個過程更多也是爲了安全所考慮 ),剩下的過程所有由 Docker Desktop 代替咱們完成。這相比於普通虛擬機軟件進行掛載的過程來講,徹底不能用百倍效率來比較了。

 

 0x06 配置 Docker Desktop

在咱們使用 Docker Desktop 系列以前,咱們還會簡單修改其的一些配置,以便更好的合理搭配操做系統與 Docker Desktop 系列軟件。

咱們能夠經過 Docker for Windows 或 Docker for Mac 的大鯨魚圖標打開配置頁面:在大鯨魚彈出的菜單中選擇 Settings ( Windows ) 或 Preferences ( macOS )。

打開 Docker for Windows 和 Docker for Mac 的配置頁面後,咱們能夠發現幾個配置頁面。這裏我不逐一把每一個頁面進行截圖了,你們能夠本身動手查看頁面每一個頁面的內容。

Docker for Windows 和 Docker for Mac 的配置項目較 Docker Engine 來講要多上許多,這主要是由於 Docker Desktop 是 Docker Engine 的超集,因此其不只包含了 Docker Engine 的配置內容,還要包含諸如虛擬機實現等其餘配置。

我這裏抽出幾個與 Docker 相關的關鍵配置,分別簡單說明它們的做用:

 

6.1 文件系統掛載配置

在 Docker for Windows 的 Shared Drivers 面板,以及在 Docker for Mac 中的 File Sharing 面板中,包含了咱們以前提到的將本機目錄掛載到 Hypervisor 裏 Linux 系統中的配置。

 

6.2 資源控制配置

在 Advanced 面板中,咱們能夠調整 Docker 最大佔用的本機資源。固然,更準確的說咱們是在調整虛擬 Linux 環境所能佔用的資源,是經過這個方式影響 Docker 所能佔用的最大資源。

 

6.3 網絡配置

在 Docker for Windows 的 Network 面板,以及在 Docker for Mac 中的 Advanced 面板中,咱們能夠配置 Docker 內部默認網絡的子網等內容。這個網絡的做用以及更詳細的內容,咱們會在之第 9 節中進行講解。

 

6.4 docker daemon 配置

在 Daemon 面板裏,咱們能夠直接配置對 docker daemon 的運行配置進行調整。默認狀況下,在 Daemon 面板裏只有 Insecure registries 和 Registry mirrors 兩個配置,分別用來定義未認證鏡像倉庫地址和鏡像源地址。

咱們能夠點擊切換按鈕切換到 Advanced 模式,在這個模式下,咱們能夠直接編輯 docker daemon 的 daemon.json 配置文件,實現更具體、完整的配置 docker daemon 的目的。

 

0x07 低系統版本解決方案

Docker Desktop 系列爲咱們在 Windows 和 macOS 中使用 Docker 提供了巨大的便利,幾乎讓咱們能夠在數分鐘內搭建 Windows 和 macOS 中 Docker 的運行環境,並獲得像 Linux 中使用 Docker 同樣的體驗。但 Docker Desktop 依然存在必定的侷限性,其中最大的莫過於其對 Windows 和 macOS 的苛刻要求。雖然咱們提倡保持操做系統的更新換代,以獲得最新的功能以及更好的安全保障,但依然有不少狀況下咱們不得不使用低版本的 Windows 和 macOS。對於這種狀況,Docker 官方也提供了相應的解決方案。

首先,讓咱們來聊聊爲何 Docker for Windows 和 Docker for Mac 會對操做系統有如此嚴苛的要求。其實緣由很簡單,剛纔咱們談到了,Docker for Windows 和 Docker for Mac 的實現分別依靠了 Windows 中的 Hyper-V 和 macOS 中的 HyperKit,而這兩個虛擬化工具只在高版本的 Windows 和 macOS 系統中才提供出來。

既然知道了緣由,解決方案天然也就有了,既然咱們不能利用 Hyper-V 或 HyperKit 來建立虛擬的 Linux 系統,那就找一個可以替代它們的工具,用其建立虛擬 Linux 系統便可。

 

0x08 Docker Toolbox

Docker 官方爲咱們找到了用於搭建虛擬 Linux 系統的軟件,即 Oracle 的 VirtualBox,並以此封裝了另外一個集成的 Docker 運行環境軟件:Docker Toolbox。

安裝 Docker Toolbox 的過程也十分簡單,下載安裝包並按常規軟件同樣安裝便可。這裏直接我直接提供給你們 Docker Toolbox 安裝包的鏈接,方便你們下載。

安裝完 Docker Toolbox 後,咱們有幾項與 Docker for Windows 和 Docker for Mac 不一樣的使用方法須要注意。

因爲不能很好的與系統以及 VirtualBox 互通結合,咱們啓動、關閉、重啓 Docker 服務不能徹底實現自動化,因此這裏 Docker 爲咱們提供了 Docker QuickStart Terminal 這個工具來處理這些過程。換個方式說,咱們必須經過它來啓動和操做 Docker,而不能再直接使用 PowerShell、Terminal 這類軟件了。

另一個不便之處就是文件系統的掛載,因爲 Docker Toolbox 沒法直接操做 VirtualBox 實現掛載,因此這個過程須要咱們人工來進行。整個掛載的方式與咱們以前談到的同樣,區別只是須要咱們手動操做。將本機目錄掛載到虛擬 Linux 系統中的配置在 VirtualBox 的 Settings 中,咱們將本機須要掛載的目錄配置進去並保存便可。

相關文章
相關標籤/搜索