作者 | Loraine Lawson
譯者 | 王強
策劃 | Tina
Moby 是一個從 Docker 衍生出來的開源項目,它在今年計劃發布三個主要版本更新。
Docker 工程師 Sebastiaan van Stijn(左)與 Bjorn Neeargaard 在 Dockercon 23 上的演講。
開源 Moby 項目的最後一個主要版本是在 2020 年發布的,但據兩位 Moby 貢獻者稱,今年該項目將發布三個主要版本。
Moby 項目是一個組件集合,用於構建基於容器的系統。項目中包括了容器運行時、容器註冊表、容器構建工具、編排工具以及網絡、日誌記錄和監控工具。這些組件可用於構建基於容器的系統,例如雲原生應用程式、微服務架構、CI/CD 管道和本地容器平台等。
Moby 維護者 Bjorn Neergaard 是 Docker 的高級軟體工程師。本月早些時候,他與技術指導委員會成員 Sebastiaan van Stijn(也是 Docker 的軟體工程師)一起在 DockerCon 上介紹了 Moby 項目的最新進展,並公布了 2023 年將要發布的主要版本的細節以及未來的計劃。
Moby 誕生背景簡介
Neergaard 和 van Stijn 在 DockerCon 演講中首先簡要介紹了 Moby 這個開源項目的來歷。van Stijn 表示,它可以追溯到開發人員最早使用容器作為輕量級虛擬機的時代,那時候這種虛擬機很難用且非常小眾。
「它沒有流行起來,因為它太複雜了,」van Stijn 說。「它很難保持同步;沒有鏡像分發,啥分發都沒有。」
然後 dotCloud(一個小型的平台即服務,後來成為 Docker)開始向用戶提供服務了。不過實際上,技術人員真正感興趣的是 dotCloud 在幕後所做的事情:他們正在部署很多技術容器,其中大部分是用 Python 編寫的,得寫大量腳本才能把容器跑起來,van Stijn 解釋道。後來 dotCloud 決定把他們一直在內部使用的東西開源。
然後,在 2013 年,Docker 創始人 Solomon Hykes 在 PyCon 的閃電演講中介紹了 Linux 容器。
「雖然只提了五分鐘,但它在業界引起了不小的震動,因為在這五分鐘內他第一次展示了一個跑起來的 Docker,」van Stijn 說。「Docker 包攬了他原本要用 LXC 來做的大量工作,但只需一條命令就搞定了。」
當時 Docker 仍然是 LXC 的一個包裝器,由 LXC 承擔所有繁重的任務。它簡化了用戶操作體驗,而且還提供了一種鏡像格式——這是一大進步,因為現在開發人員可以給容器用鏡像了,用不著為容器創建專屬的文件系統。這時候還沒有構建。他補充說,它還提供了一個 API,讓開發人員可以做一些「很酷的事情」。
「它確實對市場造成了很大的影響,因為 Linux 容器第一次成為現實,並走進了開發人員的工作中,」他說。
van Stijn 表示,LXC 用起來挺好的,但 Docker 還是決定重寫運行時,這樣就可以有內置於 Docker 引擎中的原生運行時了。後來隨著更多功能(例如網絡)進入 Docker,這一步被證明是非常正確的。容器流行了起來,但每個容器都有一個任務,這意味著程式設計師在大多數堆棧中都需要多個容器。於是有人開始嘗試做編排,後來編排也有了組合,而且讓用戶可以定義 YAML 文件了。
Docker 收購了 Fig,後者成為了 Docker Compose。然後 Docker 推出了 Swarm,它的第一個版本讓開發人員可以在機器集群中運行他們的容器。van Stijn 表示,隨後 Kubernetes 上線並決定使用 Docker 作為運行時,因為後者是運行容器的事實標準。他補充說,這也導致了一些問題,因為越來越多的人要求的各種功能顯然超出了該項目的設計目標。
「Kubernetes 不需要 Docker 的網絡堆棧,他們不需要我們提供的其他東西,但他們仍在使用運行時,有時就會出各種問題,」他說。「引擎的單體架構問題越來越大。」
此外,雖然 Docker 是事實標準,但這方面並沒有關於容器鏡像或運行時運行方式的正式規範,他說。
「實現是規範,但並不總是讓人滿意,」他說。
Docker 決定把實際的運行時分割出去。大約在同一時間,標準組織 OCI 成立。Docker 向組織捐贈了用於分發鏡像的規範,以及運行時規範和鏡像。
「現在其他人也可以實現運行時、鏡像和註冊表了,Docker 不再是唯一選項。」
Docker 還開始與幾個合作夥伴公司從頭開始重寫運行時,結果就是 containerd(發音為「container D」),這是對 Docker 運行時部分的完全重寫。
Moby 項目的誕生
van Stijn 在演講中告訴觀眾,當 Docker 決定將項目進一步拆分為多個更小的組件時,Moby 項目就開始了,因為人們想要使用 Containerd 和 Docker 引擎的其他部分。這也催生了用於構建用途的 Build Kits、用於編排的 Swarm Kit 以及 Docker 引擎。他補充說,作為一個單獨的項目,CLI 成為了 Docker 產品的一部分。運行時本身演變為 Moby 項目。
他說:「這可以讓大家在其基礎上來做構建、參與,但也讓人們更容易接受一些可能不會直接讓 Docker 這個產品獲益、但可以被他人用上的更改,反之亦然。」
隨著企業產品轉向 Mirantis,Docker 本身也發生了變化,它又變回了面向開發者的產品。他補充說,Docker 開始專注於 Docker 桌面,而 Moby 項目的工作進展緩慢,直到過去 18-24 個月,Mirantis 和微軟的維護人員加入了這項工作後情況開始變化。
「有一件事情讓大家很是困惑,那就是名為 Docker 的開原始碼到底變成了什麼樣,」Neergaard 解釋道。「但也許這也能說明一個問題:在 Docker, Inc. 之外,現在項目有了更多的參與者——而且不僅僅是參與者,還是項目的利益相關者。」
Neergaard 補充道,除了 Mirantis 和微軟之外,英偉達最近也貢獻了容器設備接口支持。
現在是什麼情況
「最近,我們也看到該項目有了更多的活動,」Neergaard 說。「可以從多種形式看出這一變化,不過下圖可能還不全。」
Moby 項目的最新活動
Docker 引擎的最新版本是在 2020 年發布的。時至今日又出現了很多代碼和改進,但一直沒出可以搭載這些改進的新版本,他補充道。
今年已經發布了兩個主要版本——版本 23.0 和 24.0,其主要特性包括:
- BuildKit,默認開啟(不再有 DOCKER_BUILDKIT=1)。Neergaard 說,BuildKit 是對構建器的重寫。「BuildKits 最初的任務和計劃的一部分是讓它取代 Docker 引擎中的經典遺留構建器,並提供更豐富、更靈活的構建平台,並且依舊像 Docker 構建一樣簡單,」他說。「所以 BuildKit 現在默認處於啟用狀態。」
- Swarm 中的 CSI(容器存儲接口)
- 可選 containerd shim:
- gVisor
- Kata 容器
- WebAsseambly
- gVisor
- Kata 容器
- WebAsseambly
Neergaard 說,備選 shim 「可能很無聊」,但開闢了很多可能性,「特別是對於那些想搞出一些新方法來運行容器或看起來有點像容器的東西(例如 WebAssembly)的人們來說是這樣的。」
該團隊曾希望在 DockerCon 之前提供第三個版本 25.0,但結果沒有成行。根據演示內容,預計這個版本現在會隨時發布。該版本將包括:
- CDI(容器設備接口)
- OTEL(OpenTelemetry)集成到引擎中
- Neergaard 說,「優雅」的健康檢查與健康開始間隔長期以來一直是一個痛點。
「今年我們的確準備發布三個版本的引擎更新,不管怎樣這是很大的挑戰;我們每次都在進步。」Neergaard 說道。
「另一件有趣且讓人想不到的事情是 Docker Swarm 中還有新特性,」他說。他解釋說,Swarm 是 Docker 對 Kubernetes 的回應。
Neergaard 說:「在這一點上,我想說 Kubernetes 在很大程度上是編排平台的事實標準,除非有充分的理由,否則你可能不應該選擇 Kubernetes 以外的其他平台。」 「有一小部分頗有聲量的用戶群體喜歡使用 Swarm,並且希望 Swarm 能做更多事情,甚至與 Kubernetes 現有的許多附加組件和擴展兼容。」
Moby 項目的未來計劃包括在 Containerd 中添加多個快照程序和原生多架構,以及重新設計的 CLI、錯誤修復和新的網絡功能,還有將協調器邏輯從 Compose 移動到聲明式 Docker 的守護進程中,兩人補充道。
原文連結:
https://thenewstack.io/the-moby-project-post-kubernetes-3-new-releases-in-2023/
「我不懂的、總有人懂」,軟體開發行業已經開始扭曲變形
OpenAI 剛剛又殺死了一批初創公司
瘋狂馬斯克的「極限」計劃居然成功了?!「下雲」後成本降低 60%,部分功能代碼精簡 90%,30 天急速遷移伺服器
程式設計師篡改 ETC 餘額,一年私吞 260 余萬元;語雀公布故障原因及賠償方案;各家財報發布,創始人們:就很難受|Q資訊