在2013年誕生的開源Docker引擎促使容器化成為實現云應用程序開發流程現代化的第一步。在Docker引擎出現之前,用戶必須為特定的計算機/硬件配置應用程序。但這種方法的缺點是,將應用程序和數據從一臺服務器移動到另一臺服務器可能會很耗時。
但是,隨著Docker Registry的推出,管理和組織容器注冊表的長期挑戰得到了解決。事實上,Docker Registry迅速成為了軟件行業的標準。如今,Docker Registry幫助很多企業通過其軟件開發過程在一個中心位置收集、存儲和交付不同階段的容器鏡像。
本文概述了人們需要了解的容器注冊表核心功能,以幫助選擇適合軟件開發需求的容器注冊表。
什么是容器注冊表?
容器注冊表是一個高度可擴展的服務器端應用程序,它允許持續集成(CI)/持續交付(CD)系統、開發人員和測試人員存儲在應用程序開發期間創建的圖像。存儲在容器注冊表中的映像用于Kubernetes、DevOps和基于容器的應用程序開發。其示例包括Docker Hub、Amazon ECR和Azure。
如何選擇合適的容器注冊表?
在選擇容器注冊表時,市場并不缺乏一些教學法選擇,這可能使選擇合適的容器注冊表成為一項艱巨的任務。但是,在用戶開始選擇之前,需要事先考慮的核心問題:
除了容器映像之外,還想承載其他工件嗎?一些容器注冊表支持其他類型的文件,例如Java、Node.js甚至Python包。另一方面,有些只支持容器鏡像。需要額外的安全性嗎?只有少數容器注冊表提供的功能更安全,每當用戶將圖像推送到注冊表時會進行漏洞掃描。應該使用本地還是托管容器注冊表?
如果用戶決定從一個容器遷移到另一個容器,則任務相對容易。
可用的容器注冊表有哪些?1.AWS彈性容器注冊表(AWS ECR)
AWS ECR可以配置為支持私有和公共Docker注冊表。這些注冊表可與AWS IAM一起使用,以控制用戶的訪問級別、服務和應用程序。在本質上,可以定義哪些用戶可以訪問受保護的容器映像。
AWS ECR還配備了漏洞圖像掃描功能,使其成為DevSecOps的基本功能。這是因為它使用Clair的公共漏洞和暴露(CVE)數據庫來評估所發現問題的嚴重性。AWS ECR的另一個重要功能是不可變圖像標簽。在啟用之后,這一功能可確保將映像推送到容器注冊表之后,任何人都無法覆蓋該映像。
2.Azure容器注冊表(ACR)
微軟公司的Azure容器注冊表基于Docker Registry 2.0,其中身份驗證由Azure RBAC管理。Azure的容器注冊表具有大多數競爭對手尚未提供的功能,例如:
自動清除舊圖像。未標記清單的保留策略。內容信任。
需要注意的是,內容信任是基于Docker創建的一個概念,它允許用戶對推送到Azure容器注冊表的圖像進行簽名。
在本質上,可能使用圖像的應用程序/用戶將其客戶端配置為僅提取簽名的圖像。同時,Docker客戶端可以驗證圖像的完整性,從而確保圖像已經發布,并且在發布后未被修改。除了托管Docker容器映像之外,Azure容器注冊表還支持OCI映像、OCI工件和Helm圖表。
而在定價信息方面,微軟公司使用分層系統的方式有所不同。
3.Docker Hub容器注冊表
Docker Hub可能是當前最流行的容器注冊表,因為它是默認的Docker存儲庫。它充當公共容器映像的市場,如果決定公開分發映像,它是最佳選擇。有趣的是,Docker Hub的免費選項在一段時間內非常有吸引力,直到一些用戶開始用來挖掘具有自動構建功能的加密貨幣。
因此,開發商對Docker的pull/push鏡像設置了一些限制,并重新思考如何通過Docker Hub獲利。用戶需要了解有關速率限制更改的更多信息,以及向Docker Hub自動構建的轉變。避免Docker的拉/取圖像速率限制的一種方法是使用緩存代理。
在定價方面,層級系統允許用戶通過付費計劃解鎖某些特定功能。但是,總體成本不會像使用AWS ECR或微軟的Azure容器注冊表(ACR) 等其他一些解決方案那樣有效。
4.GitHub軟件包注冊表
2019年5月,GitHub推出了軟件包注冊解決方案。由于其解決方案的成功,他們在2020年9月發布了對容器鏡像的支持,并首先作為測試選項。GitHub容器注冊表的一個令人關注的方面是它提供了無縫體驗,尤其是對開發人員而言。基本上,身份驗證是使用個人訪問令牌管理的。
另一種選擇是使用公共存儲庫,盡管在這種情況下,企業需要其用戶使用GitHub用戶帳戶進行身份驗證。總體而言,GitHub軟件包注冊表肯定不是包含最多功能的容器注冊表。但是,如果打算使用GitHub Actions,其定價更具競爭力,因為不需要為入口付費。
5.GitLab容器注冊表
GitLab有自己的容器注冊表,可以免費使用,并支持Docker容器映像以及Helm Chart(仍處于測試階段)。如果使用GitLab的自托管版本或通過基于云的GitLab,它可以是自托管的。GitLab容器注冊表的一大特色是它的清理策略,它可以刪除匹配某個正則表達式模式的標簽。
或者,用戶可以嘗試采用GitLab Package Registry,它也是免費的,并且支持Composer、Conan、Generic、Maven、npm、NuGet、PyPI和RubyGem。毫無疑問,如果已經將GitLab用于項目存儲庫,這是一個很好的選擇。
6.谷歌容器注冊表(GAR)
谷歌容器注冊表(GAR)在以前是值得推薦的選項,但自從2021年夏季以來,谷歌公司一直要求他們的客戶過渡到谷歌容器注冊表(GAR),因為GCR只接收關鍵的安全修復程序。從本質上來說,GAR是他們處理容器鏡像和非容器工件(例如Maven、npm、Python、Apt甚至Yum包)的新方法。
首先,GAR可以輕松地與持續集成(CI)/持續交付(CD)管道集成,以簡化容器的構建和部署。此外,它還提供掃描圖像中的漏洞,用戶可以人工啟用。
7.Harbor容器注冊表
Harbour創建于2014年,并于2016年轉為開源模型,并無疑是VMware公司最成功的開源項目之一。Harbor是一個容器注冊表,需要用戶自行安裝、配置和管理。使用其Docker容器易于部署,可以將其與任何支持Docker的Linux發行版一起使用。需要注意的是,還可以在Kubernetes集群上使用Helm Chart部署Harbor。
Harbor容器注冊表還支持希望從容器注冊表中獲得的大多數功能,例如:
漏洞掃描垃圾收集跨區域復制內容信任
總的來說,如果計劃托管容器注冊表,這是一個不錯的選擇。
8.Red Hat Quay
Quay最初創建于2012年,在過去幾年中發生了重大變化。首先,這個容器注冊表在2014年被CoreOS公司收購,后來在2018年被Red Hat收購。
而理解Quay、Project Quay或Red Hat Quay之間的區別可能會非常令人困惑。以下簡要介紹每一項的含義:
Project Quay:它是一個獨立容器注冊表,是Red Hat Quay的開源發行版,可與Sonatype Nexus Repository OSS或Harbor相媲美。Red Hat Quay.io:托管在Red Hat云平臺上的企業解決方案,按私有存儲庫的數量定價。但是其公共存儲庫仍然是免費的。Red Hat Quay:用于私有云部署的企業容器注冊表,可以通過Red Hat OpenShift由內置運營者獲得。
在本質上,Quay為不同的環境提供了多種產品,都具有豐富的功能,例如安全掃描(使用Clair)、存儲庫鏡像、審計日志等。
9.Sonatype Nexus Repository OSS
與Harbor類似,Nexus Repository是另一種自托管容器注冊表解決方案,也支持其他語言包。Sonatype有一個Docker映像,可在基礎設施中輕松部署。這個容器注冊表提供了它的Nexus Repository的專業版和一些額外的功能。
如果希望自托管包/容器注冊表,這可能是一個不錯的選擇,因為它提供了涵蓋許多場景的豐富文檔。
9種容器注冊表的比較
結論
總而言之,需要考慮的關鍵因素是網絡就近部署,因為它對于在使用容器注冊表時最大限度地降低成本和延遲至關重要。
最后,建議企業使用他們的云計算提供商提供的容器注冊表。例如,如果其基礎設施完全基于AWS云平臺,建議使用AWS ECR。
這是因為所有云計算資源共享一個共同的身份驗證模型,并且圖像將被更快地提取,因為它們不需要從不同的云平臺之間移動。
原文標題:How to Choose a Container Registry: The Top 9 Picks,作者:Florian Pialoux
本文鏈接:http://www.www897cc.com/showinfo-119-2151-0.html如何選擇容器注冊表,這里給出九個選項 譯文
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com