翻譯自:https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containerslinux
Linux容器佔整個容器生態系統的很大比例,是開發人員體驗和生產環境的基礎。可是,因爲容器與容器主機共享內核,所以不能直接在Windows上運行Linux容器。這是虛擬化的發展方向。git
如今可使用Docker for Windows和Hyper-V這兩種方法運行Linux容器:github
本文概述了每種方法的工做原理,提供了什麼時候選擇哪一種解決方案,分享工做進展。docker
要在Linux VM中運行Linux容器,請按照Docker的入門指南中的說明進行操做。windows
Docker已經可以在Windows桌面上運行Linux容器,由於它是在2016年首次發佈(在Hyper-V隔離或LCOW可用以前),使用在Hyper-V上運行的基於LinuxKit的虛擬機。安全
在此模型中,Docker Client在Windows桌面上運行,但在Linux VM上調用Docker守護程序(Docker Daemon)。網絡
在此模型中,全部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
要嘗試LCOW(Linux container on windows),請按照此入門指南中的Linux容器說明進行操做
具備Hyper-V隔離功能的Linux容器在優化的Linux VM中運行每一個Linux容器(LCOW),而且只有由操做系統來運行容器。與Moby VM方法相比,每一個LCOW都有本身的內核和本身的VM沙箱。它們也是由Windows上的Docker直接管理的。
仔細研究一下Moby VM方法和LCOW之間的容器管理有何不一樣,在LCOW模型中,容器管理保留在Windows上,每一個LCOW管理都經過GRPC和containerd進行。這意味着用於LCOW的Linux發行版容器能夠擁有更小的體積。目前,咱們正在使用LinuxKit來優化發行版容器的使用,但其餘項目如Kata也正在構建相似的高度調整的Linux發行版(Clear Linux)。
如下是每一個LCOW的詳細信息:
要查看您是否正在運行LCOW,請導航至 C:\Program Files\Linux Containers
。若是Docker配置爲使用LCOW,那麼這裏將包含一些文件,其中包含在每一個Hyper-V容器中運行的最小LinuxKit發行版。請注意,優化的VM組件小於100 MB,遠小於Moby VM中的LinuxKit映像。
LCOW正在積極發展中。跟蹤GitHub上 Moby項目的持續進展
docker run -v ...
綁定卷並將文件存儲在Windows NTFS文件系統上,所以POSIX操做須要進行一些轉換。某些文件系統操做當前已部分或未實現,這可能會致使某些應用程序不兼容。
這些操做當前不適用於裝入卷:
還有一些還沒有徹底改善:
這些應用程序都須要卷映射,沒法正常啓動或運行。
LinuxKit LCOW-kernel plus build instructions
如今,咱們建議將Moby VM方法運行Linux容器給如下人員:
想要一個穩定的容器環境。這是Docker for Windows默認的。
運行Windows或Linux容器,但不多同時運行。
Linux容器之間有複雜或自定義的網絡要求。
Linux容器之間不須要內核隔離(Hyper-V隔離)。
如今,咱們向如下人士推薦LCOW:
當咱們研究在Windows上運行Linux容器的方法時,咱們考慮了WSL。最終,咱們選擇了基於虛擬化的方法,以便Windows上的Linux容器與Linux上的Linux容器保持一致。使用Hyper-V還可使LCOW更安全。咱們可能會在未來從新評估,但目前,LCOW將繼續使用Hyper-V。
若是您有想法,請經過GitHub或UserVoice發送反饋。咱們特別感謝您對您但願看到的具體體驗的反饋。
譯者 PS:今天是情人節,,單身狗在寫博客 >.<