Windows上的Linux容器

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

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

如今可使用Docker for Windows和Hyper-V這兩種方法運行Linux容器:github

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

本文概述了每種方法的工做原理,提供了什麼時候選擇哪一種解決方案,分享工做進展。docker

Moby VM 中的Linux容器

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

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容器:ide

彼此和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:今天是情人節,,單身狗在寫博客 >.<

相關文章
相關標籤/搜索