在能夠在 Windows 10 和 Windows 服務器上運行 Docker 容器了,它是以 Ubuntu 作為宿主基礎的。 想象一下,使用你喜歡的 Linux 發行版——比如 Ubuntu——在 Windows 上運行你自己的 Linux 應用。 -- Ubuntu
本文導航
-1、概述 …… 00%
-2、前置需求 …… 05%
-3、加入 Windows 預覽體驗計劃(Insider) …… 18%
-4、 Windows 預覽體驗(Insider)的內容 …… 29%
-5、安裝 Docker for Windows …… 37%
-6、下載 Ubuntu 容器鏡像 …… 46%
-7、準備容器環境 …… 51%
-8、更多的 Docker 準備工作 …… 70%
-9、 在 Hyper-V 上運行 Ubuntu 容器 …… 79%
-10、獲取幫助 …… 94%
編譯自: https://tutorials.ubuntu.com/tutorial/tutorial-windows-ubuntu-hyperv-containers作者: Ubuntu
譯者: wxy
現在能夠在 Windows 10 和 Windows 服務器上運行 Docker 容器了,它是以 Ubuntu 作為宿主基礎的。
想象一下,使用你喜歡的 Linux 發行版——比如 Ubuntu——在 Windows 上運行你自己的 Linux 應用。
現在,借助 Docker 技術和 Windows 上的 Hyper-V 虛擬化的力量,這一切成為了可能。
你需要一個 8GB 內存的 64 位 x86 PC,運行 Windows 10 或 Windows Server。
只有加入了 Windows 預覽體驗計劃(Insider)[1],才能運行帶有 Hyper-V 支持的 Linux 容器。該計劃可以讓你測試預發布軟件和即將發布的 Windows。
如果你特別在意穩定性和隱私(Windows 預覽體驗計劃允許微軟收集使用信息),你可以考慮等待 2017 年 10 月發布的Windows 10 Fall Creator update[2],這個版本可以讓你無需 Windows 預覽體驗身份即可使用帶有 Hyper-V 支持的 Docker 技術。
你也需要最新版本的 Docker,它可以從 http://dockerproject.org 下載得到。
最后,你還需要確認你安裝了 XZ 工具[3],解壓 Ubuntu 宿主容器鏡像時需要它。
如果你已經是 Windows 預覽體驗計劃(Insider)成員,你可以跳過此步。否則在瀏覽器中打開如下鏈接:
https://insider.windows.com/zh-cn/getting-started/
要注冊該計劃,使用你在 Windows 10 中的微軟個人賬戶登錄,并在預覽體驗計劃首頁點擊“注冊”,接受條款并完成注冊。
然后你需要打開 Windows 開始菜單中的“更新和安全”菜單,并在菜單左側選擇“Windows 預覽體驗計劃”。
如果需要的話,在 Windows 提示“你的 Windows 預覽體驗計劃賬戶需要關注”時,點擊“修復”按鈕。
從 Windows 預覽體驗計劃面板,選擇“開始使用”。如果你的微軟賬戶沒有關聯到你的 Windows 10 系統,當提示時使用你要關聯的賬戶進行登錄。
然后你可以選擇你希望從 Windows 預覽體驗計劃中收到何種內容。要得到 Docker 技術所需要的 Hyper-V 隔離功能,你需要加入“快圈”,兩次確認后,重啟 Windows。重啟后,你需要等待你的機器安裝各種更新后才能進行下一步。
從 Docker Store[4] 下載 Docker for Windows。
下載完成后,安裝,并在需要時重啟。
重啟后,Docker 就已經啟動了。Docker 要求啟用 Hyper-V 功能,因此它會提示你啟用并重啟。點擊“OK”來為 Docker 啟用它并重啟系統。
從 Canonical 合作伙伴鏡像網站[5]下載用于 Windows 的最新的 Ubuntu 容器鏡像。
下載后,使用 XZ 工具解壓:
C:\Users\mathi\> .\xz.exe -d xenial-container-hyper-v.vhdx.xzC:\Users\mathi\>
首先創建兩個目錄:
創建 C:\lcow,它將用于 Docker 準備容器時的臨時空間。
再創建一個 C:\Program Files\Linux Containers ,這是存放 Ubuntu 容器鏡像的地方。
你需要給這個目錄額外的權限以允許 Docker 在其中使用鏡像。在管理員權限的 Powershell 窗口中運行如下 Powershell 腳本:
param([string] $Root
)
# Give the virtual machines group full control
$acl = Get-Acl -Path $Root
$vmGroupRule = new-object System.Security.AccessControl.FileSystemAccessRule("NT VIRTUAL MACHINE\Virtual Machines", "FullControl","ContainerInherit,ObjectInherit", "None", "Allow")
$acl.SetAccessRule($vmGroupRule)
Set-Acl -AclObject $acl -Path $Root
將其保存為set_perms.ps1并運行它。
提示,你也許需要運行 Set-ExecutionPolicy -Scope process unrestricted 來允許運行未簽名的 Powershell 腳本。
C:\Users\mathi\> .\set_perms.ps1 "C:\Program Files\Linux Containers"C:\Users\mathi\>
現在,將上一步解壓得到的 Ubuntu 容器鏡像(.vhdx)復制到 C:\Program Files\Linux Containers 下的 uvm.vhdx。
Docker for Windows 要求一些預發布的功能才能與 Hyper-V 隔離相配合工作。這些功能在之前的 Docker CE 版本中還不可用,這些所需的文件可以從 master.dockerproject.org[6] 下載。
從 master.dockerproject.org[7] 下載 dockerd.exe 和 docker.exe,并將其放到安全的地方,比如你自己的文件夾中。它們用于在下一步中啟動 Ubuntu 容器。
你現在已經準備好啟動你的容器了。首先以管理員身份打開命令行(cmd.exe),然后以正確的環境變量啟動 dockerd.exe。
C:\Users\mathi\> set LCOW_SUPPORTED=1C:\Users\mathi\> .\dockerd.exe -D --data-root C:\lcow
然后,以管理員身份啟動 Powershell 窗口,并運行 docker.exe 為你的容器拉取鏡像:
C:\Users\mathi\> .\docker.exe pull ubuntu
現在你終于啟動了容器,再次運行 docker.exe,讓它運行這個新鏡像:
C:\Users\mathi\> .\docker.exe run -it ubuntu
恭喜你!你已經成功地在 Windows 上讓你的系統運行了帶有 Hyper-V 隔離的容器,并且跑的是你非常喜歡的 Ubuntu 容器。
如果你需要一些 Hyper-V Ubuntu 容器的起步指導,或者你遇到一些問題,你可以在這里尋求幫助:
Ask Ubuntu[8]
Ubuntu Forums[9]
IRC-based support[10]
之前,一直在使用 Docker Desktop for Windows 運行 Docker 進行微服架構的開發。Window 10 2004 (20H1)版出來之前,就發現Docker Desktop for Windows有所變化,其一就是安裝包的大小,從原來的900多M,變為現在的不到400M;其二新版本的Docker Desktop for Windows一直在建議使用WSL 2進行容器的運行。借著重裝系統的機會,折騰了一下,初次研究需要費一些精神。把整個過程整理下來。
Windows 10 的 WSL 2 需要依賴于, Microsoft Store中的應用。適用于 Linux 的 Windows 子系統只能在系統驅動器(通常是 C: 驅動器)中運行,所以注意C盤的空間。
Docker Desktop 想要在Windows上運行,需要依賴于Windows的Hyper-V模塊。所以首先就要啟用Hyper-V。
啟用 Hyper-V 以在 Windows 10 上創建虛擬機。可以通過多種方式啟用 Hyper-V,包括使用 Windows 10 控制面板、PowerShell 使用部署映像服務和管理工具 (DISM)。
(1) 檢查要求
請勿在 Windows 10 家庭版上安裝 Hyper-V。
(2) 方式一、使用 PowerShell 啟用 Hyper-V
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
如果無法找到此命令,請確保你以管理員身份運行 PowerShell。
安裝完成后,請重啟操作系統。
(3) 方式二、使用 CMD 和 DISM 啟用 Hyper-V
部署映像服務和管理工具 (DISM) 可幫助配置 Windows 和 Windows 映像。在眾多應用程序中,DISM 可以在操作系統運行時啟用 Windows 功能。
使用 DISM 啟用 Hyper-V 角色:
DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V
(4) 方式三、通過“設置”啟用 Hyper-V
安裝完成后,系統會提示你重啟計算機
(1) 安裝適用于 Linux 的 Windows 子系統
必須先啟用“適用于 Linux 的 Windows 子系統”可選功能,然后才能在 Windows 上安裝 Linux 分發版。
以管理員身份打開 PowerShell 并運行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
若要僅安裝 WSL 1,現在應重啟計算機并繼續安裝所選的 Linux 分發版,否則請等待重啟并繼續更新到 WSL 2
(2) 更新到 WSL 2
2.1 若要更新到 WSL 2,必須滿足以下條件:
2.2 啟用“虛擬機平臺”可選組件
安裝 WSL 2 之前,必須啟用“虛擬機平臺”可選功能。
以管理員身份打開 PowerShell 并運行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重新啟動計算機,以完成 WSL 安裝并更新到 WSL 2。
2.3 將 WSL 2 設置為默認版本
安裝新的 Linux 分發版時,請在 Powershell 中運行以下命令,以將 WSL 2 設置為默認版本:
wsl --set-default-version 2
注意:第一次輸入上述命令會出現以下提示:
WSL 2 需要更新其內核組件。有關信息,請訪問 https://aka.ms/wsl2kernel
有關與 WSL 2 的主要區別的信息,請訪問 https://aka.ms/wsl2
請根據提示中的`https://aka.ms/wsl2kernel`地址,打開對應的網頁,下載`適用于 x64 計算機的 WSL2 Linux 內核更新包`(如下圖所示),并進行安裝。安裝完成后,再次輸入`wsl --set-default-version 2`命令即可
(3) 安裝所選的 Linux 分發版
打開 Microsoft Store,并選擇你偏好的 Linux 分發版
在分發版的頁面中,選擇“安裝”
(4) 設置新分發版
首次啟動新安裝的 Linux分發版時,將打開一個控制臺窗口。(就是之前安裝的應用)
系統會要求你等待一分鐘或兩分鐘,以便文件解壓縮并存儲到電腦上。未來的所有啟動時間應不到一秒。
然后,需要為新的 Linux 分發版創建用戶帳戶和密碼。
(5) 將分發版版本設置為 WSL 1 或 WSL 2
可以打開 PowerShell 命令行并輸入以下命令(僅在 Windows 內部版本 19041 或更高版本中可用),來檢查分配給每個已安裝的 Linux 分發版的 WSL 版本:
wsl -l -v
或
wsl --list --verbose
通過以上命令,就可以查看剛剛已經安裝的Linux發行版本,以及當前的WSL版本
若要將分發版設置為受某一 WSL 版本支持,請運行:
wsl --set-version <distribution name> <versionNumber>
請確保將 <distribution name> 替換為你的分發版的實際名稱,并將 <versionNumber> 替換為數字“1”或“2”。 可以隨時更改回 WSL 1,方法是運行與上面相同的命令,但將“2”替換為“1”。
此外,如果要使 WSL 2 成為你的默認體系結構,可以通過此命令執行該操作:
wsl --set-default-version 2
這會將安裝的任何新分發版的版本設置為 WSL 2
Docker Desktop 需要的就是 WSL 2
4. 勾選Use WSL 2 based engine。
如果在已經支持WSL的操作系統上,安裝Docker Desktop,那么這個選項是被默認選中的。
如果不選中Use WSL 2 based engine,Resources下面就會回到之前版本的模樣。自己制定CPU、內存等信息。但是之前版本指定這些信息會出錯。
5. 點擊 Apply & Restart。
6. 請確保Linux發行版本是運行在WSL 2 模式下。WSL 在V1 和 V2 兩種模式下都可以運行。
檢查 WSL 模式,運行下面的命令:
wsl -l -v
如果現有的WSL 是v1,通過下面的命令可以升級為 v2:
wsl --set-version (distro name) 2
想要把 v2 設置為默認模式,可以通過下面的命令:
wsl --set-default-version 2
7. 當 Docker Desktop 重啟之后, 進入 Settings > Resources > WSL Integration。
8. 點擊 Apply & Restart。
以上內容完成之后,主要工作就已經完成了。可以安裝運行幾個容器查看效果。
如果覺得默認的倉庫慢,可以在Settings>Docker Engine中的“registry-mirrors”配置你自己的加速器。
驗證方法:
1. 首先在Windows PowerSell中,輸入:
wsl -l -v
就可以查看到,多了docker desktop的信息。
2. 在Windows CMD中,通過命令隨便運行幾個容器(我是通過docker-compose, 運行自己的鏡像)。在Linux中,就可以查看到已經運行的容器信息。