如何在 Windows 上運行 Linux 容器

如何在 Windows 上運行 Linux 容器

現在能夠在 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

1、概述

現在能夠在 Windows 10 和 Windows 服務器上運行 Docker 容器了,它是以 Ubuntu 作為宿主基礎的。

想象一下,使用你喜歡的 Linux 發行版——比如 Ubuntu——在 Windows 上運行你自己的 Linux 應用。

現在,藉助 Docker 技術和 Windows 上的 Hyper-V 虛擬化的力量,這一切成為了可能。

2、前置需求

你需要一個 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 宿主容器鏡像時需要它。

3、加入 Windows 預覽體驗計劃(Insider)

如果你已經是 Windows 預覽體驗計劃(Insider)成員,你可以跳過此步。否則在瀏覽器中打開如下鏈接:

https://insider.windows.com/zh-cn/getting-started/

如何在 Windows 上運行 Linux 容器

要註冊該計劃,使用你在 Windows 10 中的微軟個人賬戶登錄,並在預覽體驗計劃首頁點擊“註冊”,接受條款並完成註冊。

然後你需要打開 Windows 開始菜單中的“更新和安全”菜單,並在菜單左側選擇“Windows 預覽體驗計劃”。

如何在 Windows 上運行 Linux 容器

如果需要的話,在 Windows 提示“你的 Windows 預覽體驗計劃賬戶需要關注”時,點擊“修復”按鈕。

4、 Windows 預覽體驗(Insider)的內容

從 Windows 預覽體驗計劃面板,選擇“開始使用”。如果你的微軟賬戶沒有關聯到你的 Windows 10 系統,當提示時使用你要關聯的賬戶進行登錄。

然後你可以選擇你希望從 Windows 預覽體驗計劃中收到何種內容。要得到 Docker 技術所需要的 Hyper-V 隔離功能,你需要加入“快圈”,兩次確認後,重啟 Windows。重啟後,你需要等待你的機器安裝各種更新後才能進行下一步。

如何在 Windows 上運行 Linux 容器

5、安裝 Docker for Windows

從 Docker Store[4] 下載 Docker for Windows。

如何在 Windows 上運行 Linux 容器

下載完成後,安裝,並在需要時重啟。

如何在 Windows 上運行 Linux 容器

重啟後,Docker 就已經啟動了。Docker 要求啟用 Hyper-V 功能,因此它會提示你啟用並重啟。點擊“OK”來為 Docker 啟用它並重啟系統。

如何在 Windows 上運行 Linux 容器

6、下載 Ubuntu 容器鏡像

從 Canonical 合作伙伴鏡像網站[5]下載用於 Windows 的最新的 Ubuntu 容器鏡像。

下載後,使用 XZ 工具解壓:

C:\Users\mathi\> .\xz.exe -d xenial-container-hyper-v.vhdx.xz

C:\Users\mathi\>

7、準備容器環境

首先創建兩個目錄:

如何在 Windows 上運行 Linux 容器

創建 C:\lcow,它將用於 Docker 準備容器時的臨時空間。

如何在 Windows 上運行 Linux 容器

再創建一個 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 腳本。

如何在 Windows 上運行 Linux 容器

C:\Users\mathi\> .\set_perms.ps1 "C:\Program Files\Linux Containers"

C:\Users\mathi\>

現在,將上一步解壓得到的 Ubuntu 容器鏡像(.vhdx)複製到 C:\Program Files\Linux Containers 下的 uvm.vhdx。

8、更多的 Docker 準備工作

Docker for Windows 要求一些預發佈的功能才能與 Hyper-V 隔離相配合工作。這些功能在之前的 Docker CE 版本中還不可用,這些所需的文件可以從 master.dockerproject.org[6] 下載。

如何在 Windows 上運行 Linux 容器

從 master.dockerproject.org[7] 下載 dockerd.exe 和 docker.exe,並將其放到安全的地方,比如你自己的文件夾中。它們用於在下一步中啟動 Ubuntu 容器。

9、 在 Hyper-V 上運行 Ubuntu 容器

你現在已經準備好啟動你的容器了。首先以管理員身份打開命令行(cmd.exe),然後以正確的環境變量啟動 dockerd.exe。

C:\Users\mathi\> set LCOW_SUPPORTED=1

C:\Users\mathi\> .\dockerd.exe -D --data-root C:\lcow

然後,以管理員身份啟動 Powershell 窗口,並運行 docker.exe 為你的容器拉取鏡像:

C:\Users\mathi\> .\docker.exe pull ubuntu

如何在 Windows 上運行 Linux 容器

如何在 Windows 上運行 Linux 容器

如何在 Windows 上運行 Linux 容器

現在你終於啟動了容器,再次運行 docker.exe,讓它運行這個新鏡像:

C:\Users\mathi\> .\docker.exe run -it ubuntu

恭喜你!你已經成功地在 Windows 上讓你的系統運行了帶有 Hyper-V 隔離的容器,並且跑的是你非常喜歡的 Ubuntu 容器。

10、獲取幫助

如果你需要一些 Hyper-V Ubuntu 容器的起步指導,或者你遇到一些問題,你可以在這裡尋求幫助:

  • Ask Ubuntu[8]

  • Ubuntu Forums[9]

  • IRC-based support[10]

點擊“瞭解更多”可訪問文內鏈接

相關推薦

推薦中...