閱讀995 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Windows 下 Docker 的安裝與配置概述

本文簡要說明 Windows 環境下 Docker 的安裝與配置。

原理概述

Docker 最早基於 Linux 內核相關特性構建,隻能在 Linux 類係統上運行。所以,Windows 上隻能基於 Linux 虛擬機運行 Docker。但與微軟深入合作後,從 Windows Server 2016 開始,提供了對 Docker 的原生支持。所以,在 Windows 上安裝、運行 Docker 有兩種模式:

  • Windows Container:專為 Windows 設計的容器架構下原生支持、運行的容器,Windows 底層相關 API 都是全新設計的。
  • Hyper-V/VirtualBox Container(Linux Container):基於 Windows Hyper-V 或 Docker Toolbox 內嵌的 VirtualBox 創建 Linux 虛擬機承載 Docker 容器環境。

要點

  • Windows Container 與其宿主機共享一個內核,因此容器映像版本必須與宿主機相匹配。 如果版本不同,容器雖然可以啟動,但其功能完整性得不到保證。
  • 而 Linux Container 基於虛擬機構建,所以使用自己的內核實例。因此,宿主機和容器鏡像可以是不同的操作係統版本。

兩種模式對比圖

環境要求

  • Windows Container 功能僅適用於 Windows Server 2016(核心和桌麵體驗)、Nano Server 和 Windows 10 專業版和企業版(周年紀念版)。
  • 運行 Hyper-V 容器之前必須安裝 Hyper-V 角色。
  • Windows Server 容器主機必須將 Windows 安裝到 C:\。 如果將僅部署 Hyper-V 容器,則不會應用此限製。

安裝配置概述

Docker Toolbox For Windows 7/8

Docker Toolbox

要點

對於 Windows 7/8 係統,可以基於 Docker Toolbox 安裝 Docker 環境。注意如下要點:

  • 操作係統必須是 Windows 7 之後的係統。
  • 必須是 64位係統。

Docker Toolbox 涵蓋了 Docker 運行的通用組件。包括:

  • Docker CLI 客戶端:創建鏡像、運行容器等 Docker 相關操作的 CLI 環境。
  • Docker Machine:使您可以在 Windows CMD 裏麵直接運行 docker 相關指令。
  • Docker Compose : 使您可以運行 docker-compose 相關指令。
  • Kitematic: 提供了 Docker 圖形配置界麵
  • Docker 快速啟動:使您能快速啟動 Docker 命令行環境。
  • Oracle VM VirtualBox: 虛擬機軟件,基於其自動創建 Docker 運行所依賴的 Linux 虛擬機。
  • Git: Windows Git 客戶端。

安裝

Docker Toolbox 的安裝非常簡單。和常見的 Windows 軟件類似,從 Docker 官方下載安裝包後直接雙擊安裝即可。

具體安裝細節及更多安裝說明,本文不再詳述,您可以查閱 Docker 官方文檔

注意事項

Docker Quickstart Terminal 啟動時會自動從 github 下載最新的 boot2docker.iso (一個專為Docker而設計的輕量級 Linux 發行包)。而由於國內到 github 的網絡穩定性問題,會導致由於該文件無法下載導致啟動過程中出現類似如下信息並持續卡頓:

(default) No default Boot2Docker ISO found locally, downloading the latest release...  
(default) Latest release for github.com/boot2docker/boot2docker is v17.05.0-ce  
(default) Downloading C:\Users\\Administrator\.docker\machine\cache\boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v17.05.0-ce/boot2docker.iso...  
(default) 0%Error removing file: Error removing temporary download file: remove C:\Users\\Administrator\.docker\machine\cache\boot2docker.iso.tmp24517390: The process cannot access the file because it is being used by another process.  
(default)Looks like something went wrong in step ´Checking if machine default exists´...Press any key to continue...  

處理辦法
1. 複製上述報錯信息正文中的 boot2docker.iso 下載地址,比如:https://github.com/boot2docker/boot2docker/releases/download/v17.07.0-ce/boot2docker.iso
2. 通過 VPN 等方式從 github 直接下載該文件。
3. 將下載後的文件保存到上述報錯信息中的相應目錄。比如: C:\Users\Administrator.docker\machine\cache
4. 同時刪除上述目錄所有之前生成的類似 boot2docker.iso.tmpxxxx 的緩存文件。
4. 重新運行 Docker Quickstart Terminal 。

通過 Client 連接和管理 Docker Engine

基於上述 Docker Quickstart Terminal 快速創建 Docker 虛擬環境後,可以通過如下方式,使用 Docker CLI 連接和管理 Docker Engine。

注意: 必須確保相應 Docker Engine 已正常啟動後才能正常連接。

  • 前置:獲取基礎信息

    1. 新建 CMD窗口,執行 docker-machine ls 獲取 docker Engine 相關信息:URL 列是監聽地址,Name 列是名稱(默認為 default)。
    2. Docker Quickstart Terminal 創建的 Docker Engine 默認的證書目錄如下(Administrator 對應安裝用戶): C:\Users\Administrator.docker\machine\certs
  • 直接在命令中添加相關參數

    可以在命令行中結合相關參數,直接指定目標 docker Engine 的地址進行使用和管理:

    格式
    docker -H tcp://:2376 --tlsverify --tlscacert=<證書路徑>\ca.pem --tlscert=<證書路徑>\cert.pem --tlskey=<證書路徑>\key.pem <操作指令>

    示例

    docker -H tcp://192.168.99.100:2376 --tlsverify --tlscacert=C:\Users\Administrator\.docker\machine\certs\ca.pem --tlscert=C:\Users\Administrator\.docker\machine\certs\cert.pem --tlskey=C:\Users\Administrator\.docker\machine\certs\key.pem ps
    
  • 通過 docker-machine 獲取自配置腳本

    docker-machine env 指令可以根據相應的 docker engine 自動生成相應 shell 的環境配置腳本。根據所使用 shell 的不同,結合相應 Docker Engine 的名稱,使用如下格式獲取配置腳本:

    格式
    docker-machine env --shell [docker engine 名稱]
    說明

    1. 支持的 shell 包括: fish,cmd,powershell,tcsh,auto-detect
    2. shell 自動判斷不建議使用,實測判斷效果很差。
    3. docker engine 名稱參閱前述說明,通過 docker-machine ls 獲取,如果不輸入,則使用默認名稱:*default*。

    示例

    【cmd 環境】
    docker-machine env --shell cmd default
    SET DOCKER_TLS_VERIFY=1
    SET DOCKER_HOST=tcp://192.168.99.100:2376
    SET DOCKER_CERT_PATH=C:\Users\Administrator\.docker\machine\machines\default
    SET DOCKER_MACHINE_NAME=default
    SET COMPOSE_CONVERT_WINDOWS_PATHS=true
    REM Run this command to configure your shell:
    REM     @FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd') DO @%i
    
    1. 參閱返回信息末尾相關說明,在新開的 shell 窗口中,執行最後一條指令進行環境自動配置即可。比如: ``` 【cmd 環境】: @FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd') DO @%i

    【powershell環境】:
    & docker-machine env --shell powershell default | Invoke-Expression

5. 可以將上述腳本指令創建對應腳本,比如 setCmd.bat,然後將腳本路徑添加到環境變量 PATH 末尾即可。這樣後續使用的時候直接輸入 setcmd 按需調用即可:
```
【setDockerCmd.bat】:注意,bat 腳本中,for 語句中的特殊字符需要進行轉義。所以這裏將 %i 替換為 %%i:
@FOR /f "tokens=*" %%i IN ('docker-machine env --shell cmd') DO @%%%i
``` 

Docker for Windows For Windows 10

安裝

對於 Windows 10 係統,可以基於 Docker for Windows 直接安裝 Docker 環境。注意如下要點:

  • 安裝包分為 Stable channel 和 Edge channel 兩個分支。
  • Stable 版是穩定版本,每個季度更新一次。而 Edge 版是測試版,每個月更新一次。

Docker for Windows 的安裝也類似,從 Docker 官方按需下載所需的分支版本安裝包後,直接雙擊安裝即可。

Docker for Windows

安裝完成後,雙擊桌麵上的** Docker for Windows 圖標運行 Docker。待通知區域的 Docker 圖標顯示 Docker 正在運行後,以管理員身份打開 PowerSehll,然後運行指令 ***docker version*,則會輸出 Docker 客戶端及服務端的相關版本信息:

PS C:\Windows\system32> docker version
Client:
 Version:      17.09.0-ce-rc1
 API version:  1.31
 Go version:   go1.8.3
 Git commit:   ae21824
 Built:        Wed Sep  6 22:25:14 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.09.0-ce-rc1
 API version:  1.32 (minimum version 1.24)
 Go version:   go1.8.3
 Git commit:   ae21824
 Built:        Wed Sep  6 22:35:40 2017
 OS/Arch:      windows/amd64
 Experimental: true

配置

配置自動補齊

PowerShell 下 Docker 相關指令默認沒有配置自動補齊功能。可以參閱如下步驟安裝配置 posh-docker 來實現自動補齊:
1. 以管理員身份打開 powershell
2. 執行如下指令配置 powershell 腳本執行權限(按 Y 選擇 ):

Set-ExecutionPolicy RemoteSigned
# 執行完成後,可以執行如下指令檢查配置情況
get-executionpolicy
  1. 安裝 posh-docker Install-Module posh-docker # 出現相關提示,選擇 Y
  2. 默認情況下,自動補齊隻對當前 powershell 生效。執行如下指令以對全局生效: if (-Not (Test-Path $PROFILE)) { New-Item $PROFILE –Type File –Force } Add-Content $PROFILE "`nImport-Module posh-docker"

關於 Windows 鏡像

完成前述配置後,就可以按正常模式繼續使用 Docker 了。可以點擊通知欄 Docker 圖標進行 Windows Container 和 Linux Container 的切換。需要注意的是,Windows Docker 目前支持的容器鏡像隻有兩種:Windows Server Core 和 Nano Server。 並非所有配置都支持這兩個操作係統映像。 下表詳細介紹所支持的配置。

| 主機操作係統| Windows Server 容器| Hyper-V 容器|
| - | -|
|Windows Server 2016(Standard 或 Datacenter) |Server Core/Nano Server |Server Core/Nano Server|
| Nano Server | Nano Server | Server Core/Nano Server|
| Windows 10 專業版/企業版 | 不可用 | Server Core/Nano Server |

切換到 Windows Container 後,執行如下指令獲取 Windows 鏡像:

docker pull microsoft/nanoserver
docker pull microsoft/servercore

配置加速器

由於 docker hub 在國外,所以 pull 鏡像時速度很慢甚至中斷。目前 Docker 官方與阿裏雲合作,已經退出官方國內加速地址:*https://registry.docker-cn.com*,可以配置加速器加速鏡像的下載:

Docker Toolbox For Windows 7/8

參閱前述說明,在 通過 docker-machine 獲取自配置腳本 步驟中,手工增加如下指令

SET REGISTRY-MIRRORS=https://registry.docker-cn.com

Docker for Windows For Windows 10

右擊通知區域的 Docker 圖標,選擇 Settings...,然後切換到 Proxies 選項卡,選擇 Manual proxy configuration,然後取消勾選 Use same for both,最後在 Secure Web Server.. 區域填入如下內容:

https://registry.docker-cn.com

Docker for Windows Proxy 配置

參考資料

最後更新:2017-09-25 12:03:11

  上一篇:go  如何遷移RDS中的加密存儲過程
  下一篇:go  雲生態下的基礎架構資源管理利器Terraform