1. 程式人生 > >Docker應該標準化嗎?——其他專案之鑑

Docker應該標準化嗎?——其他專案之鑑

Docker

最近已經有了很多關於Docker和標準化的文章。那麼,如果採用(比如說來自OCI的)開放式的容器規範,Docker究竟是得是失呢?接下來我們要看看類似的開源專案的一些經驗教訓。簡而言之,關於Docker標準化的爭論如下:Docker目前正在使用自己原生的架構來開發其容器平臺,但是,有些人希望Docker採用開放的,社群定義的標準,例如由開放式容器計劃(OpenContainerInitiative即OCI)定義的標準。

標準程式?

一個開放的標準將有助於確保Docker與第三方容器工具的相容性,但是它也可能會減緩Docker本身開發的速度,因為潛在的,Docker可能不得不等待其他組織定義標準,然後才能改變自己的技術。在某些方面,標準還可能會削弱Docker在競爭平臺上的競爭優勢。那麼,通過採用開放式容器標準,Docker是得到了更多,還是損失了更多呢?這裡有一些來自其他大型開源專案的經驗教訓,它們也遇到了同樣的問題。

Linux

Linux從一開始就是基於POSIX標準構建的,該標準定義了一個類Unix作業系統應該如何工作。很難想象如果LinusTorvalds(譯者注:Linux創始人)選擇基於自己的想法而不是POSIX來設計核心,Linux能在其釋出的頭幾年就獲得巨大的成功。

當然,Linux與Docker不同的是,Linux是在模擬一個在其出現之前已經存在很久的產品Unix,潛在的Linux使用者已經知道他們想要的Linux的外觀和感覺是怎樣的,因為他們希望它是一個免費的Unix實現。相比之下,Docker正在定義應用程式容器可以和應該是什麼樣的。

經驗:如果你的開源專案試圖模擬已存在的閉源平臺,那麼標準很重要,但如果你正在創造一個全新的平臺,那麼標準可能沒有多大關係。Docker屬於第二種。

ApacheHTTPD

開源ApacheWeb伺服器HTTPD誕生於20世紀90年代中期,它是一組管理員對於一個在國家超級計算應用中心(NationalCenterforSupercomputingApplications)開發的不同的Web伺服器的擴充套件。

HTTPD在全球資訊網的歷史中出現得很早,當時,關於網頁的標準(例如HTTP標準)應該如何設計和服務尚未完全定義。因此,Apache開發人員可以自由地設計他們的伺服器,以任何他們想要的方式工作。換句話說,對於Apache情況,壓根兒沒有真正需要遵循的標準。

經驗:如果沒有標準,你就可以做你想要的,但是,對於Docker而言,標準的確存在。所以,Docker並不能使用Apache的藉口(而不去遵循標準)。

GNOME

GNOME是基於Linux的計算機的桌面環境,它是作為另一個桌面環境KDE的替代品而建立的。KDE依賴於由名為TrollTech的公司授權的軟體庫。GNOME開發人員擔心TrollTech可能會停止在GNU/Linux系統上提供庫,使KDE處於停滯。因此,他們將GNOME構建為一個不依賴於任何專有庫的開放平臺。

雖然KDE從來沒有消失,但GNOME發展的很順利。(在此期間,Troll技術問題得到了解決,很久以前KDE就停止了對專有庫的依賴。在今天,它仍然在被廣泛使用。)

經驗:GNOMEvs.TrollTech案例與開放標準的辯論不是一回事。但類似的經驗也適用。GNOME桌面環境的蓬勃發展,主要是因為它承諾了一個開放的KDE替代,不受專有依賴性的影響。人們關心這一點。

LibreOffice和OpenOffice

LibreOffice及其前身,OpenOffice(LibreOffice實際上是OpenOffice的一個分支,但我不打算詳述這一點)都是文書處理器程式。兩者都提供對MicrosoftOffice的本地檔案格式的支援。然而,預設情況下,他們使用開放文件格式(ODF)來讀取和寫入檔案。

這意味著LibreOffice和OpenOffice同時支援專有標準和開放標準。這種方法可能是他們成功的關鍵。就我個人而言,如果不支援MicrosoftOffice格式,我將無法使用LibreOffice。因為,當與只有MicrosoftOffice的人協作時,我需要讀寫那些Office文件。但我自己使用基於ODF的文件。

經驗:Docker可以考慮通過支援開放容器標準並同時保留自己的框架來模擬LibreOffice和OpenOffice。提供兩個版本的Docker不是不可能的。這樣,Docker可以為那些關心這個問題(開放標準)的人提供一個符合標準的版本,同時還可以提供一個包含其他附加功能的單獨的Docker版本。

這種方法實際上可以很好地適用於社群和Docker。它一方面允許社群獲得一個基於標準的Docker,同時允許Docker保持其想要的競爭力。

譯/班利波

文章出處:Docker(dockerone)