歡迎光臨
每天分享高質量文章

Docker迎來 Windows Subsystem for Linux 2

Docker已經意識到,微軟方面剛剛推出的Windows Subsystem for Linux 2已經讓Windows系統在Docker以及Windows/Linux平臺容器開發者群體當中獲得了驚人的吸引力。
Windows Subsystem for Linux 2(WSL2)[1]已經將Linux核心引入Windows系統。有些朋友可能會問,單單因為WSL確實在模擬Linux方面表現出色,就值得我們給予關註嗎?呃……沒錯。根據Docker公司高階軟體開發者Simon Ferquel的觀點,單憑這一點就足夠了。
在一篇工程博文當中,Ferquel解釋稱,憑藉一己之力將容器技術推向主流的Docker公司正著手將其Docker Desktop開發平臺for Windows從全Hyper-V轉換為更加輕量化的WSL2 Hyper-V虛擬機器。
理由是什麼?Ferquel寫道,這是因為微軟“實際上提供了一套能夠真正在輕量級虛擬機器當中執行的Linux核心……其比Windows所提供的核心更加輕,與Windows整合效果更緊密,Docker守護程式能夠在其中執行良好並獲得卓越的效能表現。”
那麼效率如何?Ferquel宣稱,冷啟動條件下WSL2與Docker守護程式的速度“迅如奔雷——在我的開發筆記本上能夠在2秒內完成啟動;相比之下,目前的Docker Desktop版本啟動需要數十秒。”
大家覺得這算快嗎?反正Docker認為這是相當的快。
然而,轉移至WSL2的決定仍然經歷了一定探討。Docker方面測試了早期WSL2的多個build,並對多種方案進行了原型設計。現在,更新更快的Docker Desktop正在開發人員的手中逐步成型。
Docker還將利用WSL2整合包取代原本的Hyper-V VM。其將具有與當前Docker Desktop相同的功能,具體包括Kubernetes一鍵設定、自動更新、透明HTTP代理配置、訪問Windows中的守護程式以及透明系結Windows檔案掛載等等。
真正令Docker開發者們感到振奮的是,他們將能夠同時開發Windows與Linux版本的容器化程式。Ferquel宣稱這將給面向Linux環境的專案或者Linux定製型build流程的開發者群體帶來巨大的推動作用。這意味著大家不再需要分別構建Linux與Windows版程式的維護指令碼!舉例來說,Docker開發人員現在可以與Linux平臺上的開發者使用相同的一組工具及指令碼,並直接在Windows之上執行Linux Docker守護程式。
他同時宣稱,WSL的系結掛載還將具有與本機Linux裝置幾乎完全相同的I/O效能。這將直接解決Docker Desktop面臨的主要痛點之一——I/O密集型工具鏈。NodeJS、PHP以及其它Web開發工具都將從這一改進中受益。
當然,困擾舊版Docker Desktop的絕不只有效能問題。可以肯定地講,Windows檔案系結掛載的可靠性已經無法滿足要求。“目前的實施方案依賴於Samba Windows服務,但該服務可能被停用、可能被企業GPO阻止、被第三方防火牆阻止等等。Docker Desktop配合WSL 2將帶來一種新的Windows檔案系結實現方式,從而提供開箱即用且「絲般順滑」的使用體驗。”
除此之外,“與Visual Studio Code的「Remote to WSL」相結合,Docker Desktop Linux工作區將能夠執行完整的Linux工具鏈,從而透過Windows系統中的IDE在本地計算機上構建容器。”
那麼,速度提升到底源自何處?
首先,WSL 2執行在面向Windows的原生Linux 4.19核心之上。初代WSL需要先將Linux系統呼叫轉換為相應的Windows API;相比之下,WSL 2則能夠在輕量級Hyper-V VM當中執行Linux,因此不會因系統呼叫轉換而帶來任何效能損失。
另一大重要效能提升來源則在於Linux檔案系統,也就是目前廣泛使用的Linux EXT4檔案系統。此前,系統必須將檔案I/O呼叫轉換為Windows NTFS格式。為了實現檔案系統橋接,微軟公司決定使用一套效能出眾的傳統解決方案:Plan 9檔案系統協議(簡稱9P)[2]。9P網路檔案系統伺服器[3]允許各作業系統順暢對接彼此之間的不同檔案系統。
此次轉換帶來的最終結果,就是讓使用者能夠在Linux與Windows上獲得各自原生檔案系統的I/O效能。
當然,如今討論這一切可能為時尚早。畢竟Docker Desktop for WSL 2技術預覽版還沒有實際釋出,預計將在今年7月開放下載。Docker方面承諾其將能夠與現有Docker Desktop版本並行運作,因此大家可以繼續安全地推進現有專案的開發工作。
如果新的Docker Desktop真的能夠踐行這些承諾,那麼相信它必將成為涵蓋Windows Server、Linux伺服器、乃至全部雲環境的至高Windows Docker開發平臺。
相關連結:

  1. https://www.zdnet.com/article/hell-freezing-over-microsoft-releases-its-own-linux-for-windows/

  2. https://wiki.tcl-lang.org/page/9P+%28Plan+9+Filesystem+Protocol%29+VFS

    https://nelsonslog.wordpress.com/2019/02/16/plan-9-rides-again-wsl-file-access/

     

原文連結:https://www.zdnet.com/article/docker-embraces-windows-subsystem-for-linux-2/
贊(0)

分享創造快樂