在了解 Windows 版 Docker 之前,讀者首先要知道這是由 Docker 公司提供的一個(gè)產(chǎn)品。這意味著它易于下載,并且有一個(gè)很靈活的安裝器(installer)。
Windows 版 Docker 需要運(yùn)行在一個(gè)安裝了 64 位 Windows 10 操作系統(tǒng)的計(jì)算機(jī)上,通過啟動(dòng)一個(gè)獨(dú)立的引擎來提供 Docker 環(huán)境。
其次,讀者需要知曉 Windows 版 Docker 是一個(gè)社區(qū)版本(Community Edition,CE)的應(yīng)用,并不是為生產(chǎn)環(huán)境設(shè)計(jì)的。
最后,讀者還需要知道 Windows 版 Docker 在某些版本特性上可能是延后支持的。這是因?yàn)?Docker 公司對(duì)該產(chǎn)品的定位是穩(wěn)定性第一,新特性其次。
以上 3 點(diǎn)被添加到 Windows 版 Docker 這個(gè)安裝快捷簡單,但并不支持生產(chǎn)環(huán)境部署的產(chǎn)品當(dāng)中。
接下來我們一起了解一下如何安裝 Windows 版 Docker。
在安裝之前,Windows 版 Docker 的環(huán)境有以下要求。
Windows 10 Pro(專業(yè)版) / Enterprise(企業(yè)版) / Education(教育版)(1607 Anniversary Update、Build 14393 或者更新的版本)。
Windows 必須是 64 位的版本。
需要啟用 Windows 操作系統(tǒng)中的 Hyper-V 和容器特性。
接下來的步驟會(huì)假設(shè)讀者的計(jì)算機(jī)已經(jīng)開啟了 BIOS 設(shè)置中的硬件虛擬化支持。如果沒有開啟,讀者需要在機(jī)器上執(zhí)行下面的步驟。
首先,讀者需要確認(rèn)在 Windows 10 操作系統(tǒng)中,Hyper-V 和容器特性已安裝并且開啟。
⒈ 右鍵單擊 Windows 開始按鈕并選擇“應(yīng)用和功能”頁面。
⒉ 單擊“程序和功能”鏈接。
⒊ 單擊“啟用或關(guān)閉Windows功能”。
⒋ 確認(rèn)Hyper-V和容器復(fù)選框已經(jīng)被勾選,并單擊確定按鈕。
按上述步驟操作完成后,會(huì)安裝并開啟 Hyper-V 和容器特性,如下圖所示。這時(shí)需要重啟操作系統(tǒng)。


其中,容器特性只有在 summer 2016 Windows 10 Anniversary Update(build 14393)版本或更高版本上才能開啟。
當(dāng)讀者完成 Hyper-V 和容器特性的安裝并重啟機(jī)器之后,就可以安裝 Windows 版 Docker 了。
⒈ 訪問 Docker 的下載(https://www.docker.com/products/docker-desktop)頁面,并單擊其中的 Download for Windows 按鈕。
⒉ 單擊后會(huì)跳轉(zhuǎn)到 Docker 商店,需要讀者使用自己的 Docker ID 進(jìn)行登錄。
⒊ 單擊任意 Get Docker 下載鏈接。Docker for Windows 分為穩(wěn)定版(Stable)和搶鮮版(Edge)。搶鮮版當(dāng)中包含一些新特性,但是可能不夠穩(wěn)定。單擊下載鏈接后,會(huì)將名為 Docker for Windows Installer.exe 的安裝包下載到默認(rèn)下載目錄。
⒋ 找到上一步下載的安裝包并運(yùn)行即可。
以管理員身份運(yùn)行安裝向?qū)В凑仗崾疽徊揭徊酵瓿烧麄€(gè)安裝過程。安裝完成后 Docker 會(huì)作為系統(tǒng)服務(wù)自動(dòng)啟動(dòng),并且在 Windows 的通知欄看到 Docker 的大鯨魚圖標(biāo)。
恭喜!到目前為止已經(jīng)成功完成 Windows 版 Docker 的安裝。
打開命令行或者 PowerShell 界面,并嘗試執(zhí)docker version命令。
Client:
Version: 18.01.0-ce
API version: 1.35
Go version: go1.9.2
Git commit: 03596f5
Built: Wed Jan 10 20:05:55 2018
OS/Arch: windows/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.01.0-ce
API version: 1.35 (minimum version 1.12)
Go version: go1.9.2
Git commit: 03596f5
Built: Wed Jan 10 20:13:12 2018
OS/Arch: linux/amd64
Experimental: false
注意觀察命令輸出內(nèi)容,其中 Server 部分中的 OS/Arch 屬性展示了當(dāng)前的操作系統(tǒng)是 linux/amd64。
這是因?yàn)樵谀J(rèn)安裝方式中,Docker daemon 是運(yùn)行在 Hyper-V 虛擬機(jī)中的一個(gè)輕量級(jí) Linux 上的。這種情況下,讀者只能在 Windows 版 Docker 上運(yùn)行 Linux 容器。
如果讀者想要運(yùn)行原生 Windows 容器(Native Windows Container),可以右擊 Windows 通知欄中的 Docker 鯨魚圖標(biāo),并選擇“切換到 Windows 容器”。
使用下面的命令也可以完成切換(進(jìn)入 \Program Files\Docker\Docker 目錄下執(zhí)行)。
C:\Program Files\Docker\Docker> .\dockercli -SwitchDaemon
如果沒有開啟 Windows 容器特性,則會(huì)看到下圖的提示。

如果已經(jīng)開啟了 Windows 容器特性,則只需要花費(fèi)數(shù)秒就能完成切換。一旦切換完成,在命令行中執(zhí)行docker version指令的輸出內(nèi)容如下。
C:\> docker version
Client:
Server:
Engine:
Version: 18.01.0-ce
API version: 1.35 (minimum version 1.24)
Go version: go1.9.2
Git commit: 03596f5
Built: Wed Jan 10 20:20:36 2018
OS/Arch: windows/amd64
Experimental: true
可以看到,現(xiàn)在 Server 版本信息變成了 windows/amd64。這意味著 Docker daemon 運(yùn)行在原生 Windows 內(nèi)核上,并且只能運(yùn)行 Windows 容器了。
同時(shí)也可以發(fā)現(xiàn),Experimental 這個(gè)屬性的值為 true。這表示當(dāng)前運(yùn)行的 Docker 版本是實(shí)驗(yàn)版本。
前面提到過,Docker for Windows有兩個(gè)版本:穩(wěn)定版和搶鮮版。 Windows 容器是搶鮮版中的一個(gè)實(shí)驗(yàn)特性。
讀者可以通過運(yùn)行dockercli -Version命令來查看當(dāng)前的 Docker 版本。
dockercli 命令在 C:\Program Files\Docker\Docker 目錄下。
C:\Program Files\Docker\Docker> .\dockercli -Version
Docker for Windows
Version: 18.01.0-ce-win48 (15285)
Channel: edge
Sha1: ee2282129dec07b8c67890bd26865c8eccdea88e
OS Name: Windows 10 Pro
Windows Edition: Professional
Windows Build Number: 16299
下面展示了一些常用的能夠正常執(zhí)行的 Docker 命令。
> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
> docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
> docker system info
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 6
Server Version: 17.12.0-ce
Storage Driver: windowsfilter
Windows 版 Docker 包括 Docker 引擎(客戶端和 daemon)、Docker Compose、Docker Machine 以及 Docker Notary 命令行。
通過下列命令確認(rèn)各個(gè)模塊已經(jīng)成功安裝。
C:\> docker --version
Docker version 18.01.0-ce, build 03596f5
C:\> docker-compose --version
docker-compose version 1.18.0, build 8dd22a96
C:\> docker-machine --version
docker-machine.exe version 0.13.0, build 9ba6da9
C:\> notary version
notary
Version: 0.4.3
Git commit: 9211198