Windows上的Linux容器


翻譯自:https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers

Linux容器占整個容器生態系統的很大比例,是開發人員體驗和生產環境的基礎。但是,由於容器與容器主機共享內核,因此不能直接在Windows上運行Linux容器。這是虛擬化的發展方向。

現在可以使用Docker for Windows和Hyper-V這兩種方法運行Linux容器:

  1. 在完整的Linux VM(虛擬機)中運行Linux容器 - Docker在Windows上的通用做法。
  2. 使用Hyper-V隔離(LCOW)運行Linux容器- 這是Docker for Windows中的新選項。

本文概述了每種方法的工作原理,提供了何時選擇哪種解決方案,分享工作進展。

Moby VM 中的Linux容器

要在Linux VM中運行Linux容器,請按照Docker的入門指南中的說明進行操作。

Docker已經能夠在Windows桌面上運行Linux容器,因為它是在2016年首次發布(在Hyper-V隔離或LCOW可用之前),使用在Hyper-V上運行的基於LinuxKit的虛擬機。

在此模型中,Docker Client在Windows桌面上運行,但在Linux VM上調用Docker守護程序(Docker Daemon)。

Moby VM as the container host

在此模型中,所有Linux容器共享一個基於Linux的容器主機並且所有Linux容器:

彼此和Moby VM共享內核,但不與Windows主機共享。
與Linux上運行的Linux容器具有一致的存儲和網絡屬性(因為它們在Linux VM上運行)。

這也意味着Linux容器主機(Moby VM)需要運行Docker守護程序和所有Docker守護程序的依賴項。

要查看您是否正在使用Moby VM運行,請使用Hyper-V Manager UI或在管理員權限的PowerShell窗口中運行Get-VM,檢查運行 Moby VM

具有Hyper-V隔離的Linux容器

要嘗試LCOW(Linux container on windows),請按照此入門指南中的Linux容器說明進行操作

具有Hyper-V隔離功能的Linux容器在優化的Linux VM中運行每個Linux容器(LCOW),並且只有由操作系統來運行容器。與Moby VM方法相比,每個LCOW都有自己的內核和自己的VM沙箱。它們也是由Windows上的Docker直接管理的。

Linux containers with Hyper-V isolation (LCOW)

仔細研究一下Moby VM方法和LCOW之間的容器管理有何不同,在LCOW模型中,容器管理保留在Windows上,每個LCOW管理都通過GRPC和containerd進行。這意味着用於LCOW的Linux發行版容器可以擁有更小的體積。目前,我們正在使用LinuxKit來優化發行版容器的使用,但其他項目如Kata也正在構建類似的高度調整的Linux發行版(Clear Linux)。

以下是每個LCOW的詳細信息:

LCOW architecture

要查看您是否正在運行LCOW,請導航至 C:\Program Files\Linux Containers 。如果Docker配置為使用LCOW,那么這里將包含一些文件,其中包含在每個Hyper-V容器中運行的最小LinuxKit發行版。請注意,優化的VM組件小於100 MB,遠小於Moby VM中的LinuxKit映像。

工作進展

LCOW正在積極發展中。跟蹤GitHub上 Moby項目的持續進展

綁定 mounts

docker run -v ...綁定卷並將文件存儲在Windows NTFS文件系統上,因此POSIX操作需要進行一些轉換。某些文件系統操作當前已部分或未實現,這可能會導致某些應用程序不兼容。

這些操作當前不適用於裝入卷:

  • MkNod
  • XAttrWalk
  • XAttrCreate
  • Lock
  • Getlock
  • Auth
  • Flush
  • INotify

還有一些尚未完全改善:

  • GetAttr - Nlink計數始終報告為2
  • Open - 僅實現ReadWrite,WriteOnly和ReadOnly

這些應用程序都需要卷映射,無法正常啟動或運行。

  • MySQL
  • PostgreSQL
  • WordPress
  • Jenkins
  • MariaDB
  • RabbitMQ

額外的信息

Docker blog describing LCOW

Linux Container Video

LinuxKit LCOW-kernel plus build instructions

何時使用Moby VM vs LCOW

何時使用Moby VM

現在,我們建議將Moby VM方法運行Linux容器給以下人員:

想要一個穩定的容器環境。這是Docker for Windows默認的。
運行Windows或Linux容器,但很少同時運行。
Linux容器之間有復雜或自定義的網絡要求。
Linux容器之間不需要內核隔離(Hyper-V隔離)。

何時使用LCOW

現在,我們向以下人士推薦LCOW:

  1. 想要測試我們的最新技術。
  2. 同時運行Windows和Linux容器。
  3. Linux容器之間需要內核隔離(Hyper-V隔離)。

我們考慮的其他選擇

當我們研究在Windows上運行Linux容器的方法時,我們考慮了WSL。最終,我們選擇了基於虛擬化的方法,以便Windows上的Linux容器與Linux上的Linux容器保持一致。使用Hyper-V還可以使LCOW更安全。我們可能會在將來重新評估,但目前,LCOW將繼續使用Hyper-V。

如果您有想法,請通過GitHub或UserVoice發送反饋。我們特別感謝您對您希望看到的具體體驗的反饋。

譯者 PS:今天是情人節,,單身狗在寫博客 >.<


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM