如何在 Windows 上執行 Linux 容器
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),才能執行帶有 Hyper-V 支援的 Linux 容器。該計劃可以讓你測試預釋出軟體和即將釋出的 Windows。
如果你特別在意穩定性和隱私(Windows 預覽體驗計劃允許微軟收集使用資訊),你可以考慮等待 2017 年 10 月釋出的Windows 10 Fall Creator update,這個版本可以讓你無需 Windows 預覽體驗身份即可使用帶有 Hyper-V 支援的 Docker 技術。
你也需要最新版本的 Docker,它可以從 http://dockerproject.org 下載得到。
最後,你還需要確認你安裝了 XZ 工具,解壓 Ubuntu 宿主容器映象時需要它。
3、加入 Windows 預覽體驗計劃(Insider)
如果你已經是 Windows 預覽體驗計劃(Insider)成員,你可以跳過此步。否則在瀏覽器中開啟如下連結:
https://insider.windows.com/zh-cn/getting-started/
要註冊該計劃,使用你在 Windows 10 中的微軟個人賬戶登入,並在預覽體驗計劃首頁點選“註冊”,接受條款並完成註冊。
然後你需要開啟 Windows 開始選單中的“更新和安全”選單,並在選單左側選擇“Windows 預覽體驗計劃”。
如果需要的話,在 Windows 提示“你的 Windows 預覽體驗計劃賬戶需要關注”時,點選“修復”按鈕。
4、 Windows 預覽體驗(Insider)的內容
從 Windows 預覽體驗計劃皮膚,選擇“開始使用”。如果你的微軟賬戶沒有關聯到你的 Windows 10 系統,當提示時使用你要關聯的賬戶進行登入。
然後你可以選擇你希望從 Windows 預覽體驗計劃中收到何種內容。要得到 Docker 技術所需要的 Hyper-V 隔離功能,你需要加入“快圈”,兩次確認後,重啟 Windows。重啟後,你需要等待你的機器安裝各種更新後才能進行下一步。
5、安裝 Docker for Windows
從 Docker Store 下載 Docker for Windows。
下載完成後,安裝,並在需要時重啟。
重啟後,Docker 就已經啟動了。Docker 要求啟用 Hyper-V 功能,因此它會提示你啟用並重啟。點選“OK”來為 Docker 啟用它並重啟系統。
6、下載 Ubuntu 容器映象
從 Canonical 合作伙伴映象網站下載用於 Windows 的最新的 Ubuntu 容器映象。
下載後,使用 XZ 工具解壓:
C:\Users\mathi\> .\xz.exe -d xenial-container-hyper-v.vhdx.xz
C:\Users\mathi\>
7、準備容器環境
首先建立兩個目錄:
建立 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
。
8、更多的 Docker 準備工作
Docker for Windows 要求一些預釋出的功能才能與 Hyper-V 隔離相配合工作。這些功能在之前的 Docker CE 版本中還不可用,這些所需的檔案可以從 master.dockerproject.org 下載。
從 master.dockerproject.org 下載 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
現在你終於啟動了容器,再次執行 docker.exe
,讓它執行這個新映象:
C:\Users\mathi\> .\docker.exe run -it ubuntu
恭喜你!你已經成功地在 Windows 上讓你的系統執行了帶有 Hyper-V 隔離的容器,並且跑的是你非常喜歡的 Ubuntu 容器。
10、獲取幫助
如果你需要一些 Hyper-V Ubuntu 容器的起步指導,或者你遇到一些問題,你可以在這裡尋求幫助:
相關文章
- 如何在Windows上脫離Cygwin執行Apache KafkaWindowsApacheKafka
- 如何在生產環境執行容器
- 如何在Docker容器中執行GUI程式DockerGUI
- 無需sudo使用Podman在Linux上執行容器Linux
- 同步容器(如Vector)並不是所有操作都執行緒安全!~執行緒
- 如何在 Linux/Windows/MacOS 上使用 .NET 進行開發LinuxWindowsMac
- 如何在Windows上使用Git建立一個可執行指令碼?WindowsGit指令碼
- 如何在 Android 上藉助 Wine 來執行 Windows AppsAndroidWindowsAPP
- 如何在 Android 上執行 ClojureScriptAndroid
- 如何在你的Linux機器上安裝執行OracleLinuxOracle
- win系統如何在mac上執行Mac
- SpringBoot 專案如何在tomcat容器中執行Spring BootTomcat
- 如何在Docker容器啟動時自動執行指令碼Docker指令碼
- 如何在 SAP BTP 上 手動執行 workflow
- 在Linux中,如何在Linux中使用LXD進行容器管理?Linux
- 如何在Windows上使用Python進行開發WindowsPython
- 如何在 Linux 上執行命令前臨時清空 Bash 環境變數Linux變數
- 在Linux作業系統上執行Windows應用程式(轉)Linux作業系統Windows
- 如何在Ubuntu上建立及管理LXC容器Ubuntu
- linux下QT在windows下執行LinuxQTWindows
- 如何在 Windows 中檢查計算機正常執行時間Windows計算機
- 在Linux上以容器方式執行安卓系統的開源專案:WaydroidLinux安卓
- 如何在Windows上安裝DockerWindowsDocker
- [golang]如何在windows上使用cgoGolangWindows
- 如何在Windows上編譯Docker?Windows編譯Docker
- 在 Windows 系統上執行 VIC 水文模型Windows模型
- Clojure執行環境在windows上安裝Windows
- 底層 Linux 容器執行時之發展史Linux
- linux 上 jenkins 通過節點服務在 windows 執行指令碼LinuxJenkinsWindows指令碼
- 如何在Linux中檢視所有正在執行的程式Linux
- 如何在Linux中執行MySQL/MariaDB查詢LinuxMySql
- 安卓教育應用如何在linux上流暢執行安卓Linux
- 如何在 Linux 中以指令碼模式執行 TopLinux指令碼模式
- 容器進階:OCI與容器執行時
- Windows Subsystem for Linux 允許在Windows 11中執行Linux系統WindowsLinux
- 如何在windows下進行LINUX虛擬機器搭建WindowsLinux虛擬機
- 如何在Linux終端同時執行多個Linux命令Linux
- JMeter:Linux上安裝&執行JMeterJMeterLinux