docker 是一個流行的容器構建工具,但編寫優化和安全的 dockerfile 是一項挑戰。本文介紹了 cloud native buildpacks 的優點,它們消除了編寫 dockerfile 的需要,提供一致的體驗、消除了依賴項管理並增強了可重用性。buildpacks 支持多種語言,允許定製,但避免了不良做法。它們輸出 oci 映像,確保兼容性,簡化了依賴項管理,並通過構建優化功能構建更小的映像。對於大規模基礎設施,buildpacks 提供了一個實用的替代方案,簡化了容器構建並減少了技術債務。
Docker是構建容器的不二之選,但有一個問題:編寫優化且安全的 Dockerfile 並大規模管理它們的庫可能是一項真正的挑戰。在本文中,我將解釋爲什麼您可能希望使用 Cloud Native Buildpacks而不是Docker。
使用 Docker 的常見問題
當一個公司開始使用 Docker 時,通常會從一個簡單的Dockerfile開始。然而,隨着越來越多的項目需要使用 Dockerfile,經常會出現以下問題情況:
負責容器化應用程序的開發人員缺乏編寫新 Dockerfile 的知識、時間或動力。因此,他們從其他項目複製並粘貼 Dockerfile。
複製的 Dockerfile 中的任何不良做法或安全漏洞都會被傳播。
複製的 Dockerfile 可能針對特定堆棧進行了優化,導致新環境中的性能不佳。
每次需要將新應用程序容器化時,這種情況都會重複出現。雖然對於少數應用程序來說,這可能是可控的,但當處理數百個應用程序時,就會出現嚴重問題。這可能會導致嚴重的技術債務和安全漏洞。
Buildpacks 提供什麼?
一致的體驗
在平臺工程時代(流程標準化至關重要),面向微服務的基礎設施必須適應各種各樣的堆棧。Buildpacks 提供了一種標準化方法來創建容器映像,只需一個命令即可將任何應用程序容器化。這個命令pack就是所需的一切(無需編寫 Dockerfile 或其他配置文件)。
消除依賴管理
消除了對依賴項管理的擔憂。Buildpacks 會自動檢測、下載和安裝必要的依賴項、庫、框架和運行時環境。
可重用性
一個主要優勢是可以使用由社區維護的可用於生產的構建包。來自 Google、Heroku、Broadcom/VMware 等公司的專家管理這些構建包映像,以確保您的容器映像針對每個堆棧進行了優化和明確保護。
對 Buildpacks 的誤解
大約十年前,當 buildpack 首次被創建時,用戶抱怨了一些限制。但大多數限制早已不復存在,所以讓我來揭穿這些迷思。
誤區一:僅限於少數幾種編程語言
Buildpacks 支持所有現代編程語言。Google 、Heroku和開源Paketo Buildpacks項目等提供商支持多種語言,包括Java、Node.js、.NET Core、Go、Python、PHP、Ruby 和 Rust。
誤區二:有限的定製
Cloud Foundry 維護者Tim Downey表示:“存在限制,但這是設計使然。” Buildpack 的“限制”將保護您免受不良做法的影響,例如以 root 身份運行容器或運行任意 Shell 命令。如果您需要解決方法,總有一種乾淨的方法可以做到。例如,如果您需要安裝應用程序依賴項中未列出的軟件包(例如安裝某些 OS 實用程序),則可以使用 apt buildpack乾淨地執行此操作。
誤區三:供應商鎖定
Buildpacks 輸出類似 Docker 的 OCI 映像,確保與任何託管平臺或您的基礎設施實現最大程度的兼容性。如果某個 Buildpack 供應商特定的優化對您不起作用,您可以輕鬆切換到其他提供商,例如開源的 Paketo Buildpacks,它們不依賴任何供應商。
誤解四:依賴管理問題
Buildpacks 簡化了依賴項管理。它們會自動跟蹤和管理依賴項,爲具有嚴格安全要求的複雜應用程序提供強大的方法。Buildpacks 甚至可以使用與構建映像相同的命令爲您的容器映像生成軟件物料清單 (SBOM)。
誤區五:圖片未優化
Buildpacks 的設計遵循最佳實踐,旨在構建更快、更小的鏡像。它們還提供高級功能,例如rebase 功能,該功能允許重建鏡像的任何部分,而無需完全重建,而這在基於 Docker 的鏡像/工作流中是不可用的。
不要浪費時間編寫 Dockerfile:使用 Buildpacks
如果您的基礎設施規模較小或只有一名開發人員,那麼編寫 Dockerfile 是正確的選擇,但對於任何基礎設施規模足夠大的公司,您都應該認真考慮嘗試 Cloud Native Buildpacks。學習曲線非常簡單,從長遠來看可以爲您節省大量工作。
以上就是爲什麼應該使用 Buildpacks 而不是 Docker的詳細內容,更多請關注本站其它相關文章!