Docker - 私有登錄檔



Docker 登錄檔是中心映象倉庫,專門用於儲存和分發 Docker 映象。這些映象構成了任何可容器化應用程式的基礎,其中包含應用程式的原始碼、執行時環境、服務依賴項和配置檔案。在這方面,Docker 登錄檔使單個開發人員或團隊能夠輕鬆共享他們的工作並在不同的環境中部署他們的容器化應用程式。

Docker 登錄檔的型別(公共與私有)

Docker 登錄檔通常可分為兩種型別:

  • 公共登錄檔 - 它們公開可用,通常包含許多預構建的映象。最流行的公共登錄檔是 Docker Hub,其中包含數千個官方和社群貢獻的映象。
  • 私有登錄檔 - 這些登錄檔託管在您的基礎架構或雲中,提供有限或受限的訪問許可權。當儲存專有映象、敏感資料或具有獨特合規性要求的映象時,這些登錄檔非常有用。一些流行的私有登錄檔選項包括 Docker Registry(開源)、Harbor(開源)、Nexus Repository 和 JFrog Artifactory。

流行的 Docker 登錄檔選項

Docker Hub(官方登錄檔)

Docker Hub 是所有 Docker 映象的官方基於雲的登錄檔服務。它是一箇中心位置,開發人員可以在其中儲存和共享容器映象。Docker Hub 提供公共和私有倉庫,因此它是開源專案和私有企業應用程式的全方位解決方案。以下是一些功能:

  • 大型生態系統 - Docker Hub 執行著數百萬個由龐大的開發者社群共享的容器映象,提供來自 Docker 和經過驗證的釋出者的官方映象。
  • 自動化構建 - Docker Hub 可以自動構建託管在 GitHub 或 Bitbucket 上的原始碼的映象。
  • Webhooks - 允許在成功推送到倉庫後觸發操作。
  • 內容信任 - 映象的真實性和完整性。
  • 與 Docker CLI 無縫整合 - 可以從命令列介面拉取和推送映象。

自託管登錄檔

自託管登錄檔可以對 Docker 映象的儲存和分發進行更顯著的控制,尤其對於具有嚴格安全、合規或效能要求的組織而言。流行的自託管登錄檔解決方案包括:

Docker Registry(開源)

Docker Registry 是一個基本的開源專案,許多其他登錄檔(例如 Docker Hub)都是基於它的。它是託管您自己的私有登錄檔的一種簡單方法。

  • 簡單性 - 易於部署和配置。
  • 可定製性 - 透過其配置檔案高度可定製。
  • 可擴充套件性 - 可以使用分散式儲存後端進行水平擴充套件。
  • 安全性 - 它提供透過 TLS 加密的通訊和基本身份驗證的方法。
  • 可擴充套件性 - 可以透過中介軟體新增其他功能。

Nexus Repository

Sonatype Nexus Repository 是一個通用且多功能的倉庫管理器。它支援大多數倉庫格式,包括 Docker 映象。

  • 通用格式支援 - 它不僅支援 Docker,還支援 Maven、npm、NuGet 等格式。
  • 安全性 - 與安全工具 IQ 伺服器整合,增強安全性。
  • 高可用性 - 叢集支援負載平衡、高可用性和冗餘。
  • 整合 - 與 CI/CD 工具無縫整合,以充分實現 DevOps 管道。
  • 企業級功能 - 包含高階功能,如暫存、提升和清理策略。

JFrog Artifactory

JFrog Artifactory 是一個通用的二進位制儲存庫管理器,支援所有主要的包格式,包括 Docker 映象。

  • 通用儲存庫 - 從開發到生產控制所有工件。
  • 安全性和合規性 - 配備 Xray 以對 Docker 映象進行深度遞迴掃描。
  • 高可用性 - 提供多站點複製和高可用性配置。
  • 自動化 - 它與各種 CI/CD 工具良好整合,用於自動構建和部署。
  • 高階快取 - 智慧快取加快了對常用映象的訪問速度。

基於雲的登錄檔

基於雲的登錄檔提供託管服務,用於與其他雲服務一起儲存和分發 Docker 映象。以下是一些常見的:

Amazon Elastic Container Registry (ECR)

Amazon Elastic Container Registry (ECR) 是與 AWS 整合的完全託管的 Docker 容器登錄檔。

  • 與 AWS 整合 - 與更廣泛的 AWS 工具集深度整合,包括 ECS、EKS 和 CodePipeline。
  • 可擴充套件性 - 它可以擴充套件儲存大小和映象數量。
  • 安全性 - 提供映象加密、IAM 用於控制訪問和網路整合。
  • 映象掃描 - 透過 Amazon Inspector 掃描映象中的軟體漏洞。
  • 經濟高效 - 按使用付費定價模式,並提供免費套餐選項。

Azure Container Registry (ACR)

Microsoft Azure Container Registry 是作為 Microsoft Azure 雲的一部分提供的託管 Docker 登錄檔服務。

  • 與 Azure 服務整合 - 與 Azure Kubernetes Service (AKS) 以及其他 Azure DevOps 工具無縫執行。
  • 地理複製 - 這允許將容器映象複製到不同的 Azure 區域。
  • 安全性 - 支援與 Azure Active Directory 整合,以實現單點登入和基於角色的訪問控制。
  • 自動化工作器 - 它透過 ACR Tasks 自動化容器映象構建和更新基礎映象。
  • 漏洞掃描 - 與安全工具整合,以掃描映象漏洞。

Google Container Registry (GCR)

Google Container Registry 是 GCP 的 Docker 映象儲存服務。

  • GCP 整合 - 與 Google Kubernetes Engine (GKE) 和其他 Google Cloud 服務無縫整合。
  • 全球可用 - 映象儲存在全球多個區域,以實現高可用性和低延遲。
  • 安全性 - 用於 IAM 訪問控制和 VPC 服務控制。
  • 漏洞掃描 - 自動掃描映象漏洞並提供詳細報告。
  • 易用性 - 使用 gcloud 命令列工具和與 Google Cloud Build 整合以實現 CI/CD 的簡單性。

每個登錄檔選項都有其自身的功能和能力,可用於滿足相應的組織需求。無論您選擇靈活的自託管方式還是基於雲服務的便捷性,瞭解這些選項都可以幫助您在為容器化應用程式選擇登錄檔時做出正確的選擇。

關鍵 Docker 登錄檔命令

使用 Docker 登錄檔時,您會定期使用一些重要的命令。它們是:

Docker 登入

這將使用登錄檔驗證您的 Docker CLI。這是將任何映象推送到私有登錄檔所需的。

docker login [registry_url]

示例 - 登入到 Docker Hub -

$ docker login
Docker Login

Docker 標記

此命令使用特定名稱和標記標記映象,以便準備將該映象推送到登錄檔。

$ docker tag [source_image[:tag]] [repository[:tag]]

示例 - 為 Docker Hub 標記檔案系統中的映象 -

$ docker tag my-app:latest myusername/my-app:latest
Docker Tag

Docker 推送

將標記的映象推送到 Docker 登錄檔。

$ docker push [repository[:tag]]

示例 - 將標記的映象推送到 Docker Hub -

$ docker push myusername/my-app:latest
Docker Push

Docker 拉取

此命令從 Docker 登錄檔下載映象。

$ docker pull [repository[:tag]]

示例 - 從 Docker Hub 拉取映象 -

$ docker pull myusername/my-app:latest
Docker Pull

結論

Docker 登錄檔管理是當代容器化應用程式開發和部署的核心能力之一。開發人員可以在社群維護的映象集合 Docker Hub 或自託管和基於雲的服務之間進行選擇,以實現靈活性和可擴充套件性、自由和控制。

關於 Docker 私有登錄檔的常見問題

1. 公共 Docker 登錄檔和私有 Docker 登錄檔有什麼區別?

公共登錄檔(例如 Docker Hub)允許公眾訪問,並託管大量社群貢獻的映象。私有登錄檔託管在您的基礎架構或其他提供商處,以提供對您的專有映象的受控訪問和更好的安全性。

2. 如何將 Docker 映象推送到登錄檔?

推送映象涉及使用登錄檔的 URL 和所需的儲存庫名稱對其進行標記。然後,可以發出 docker push 命令,其中清楚地規定了標記的映象的名稱。該映象將被推送到指定的登錄檔,並可供下載和執行。

3. 我可以託管我自己的私有 Docker 登錄檔嗎?

是的,當您使用開源 Docker Registry 分發版建立登錄檔時,這是可實現的。這將使所有映象完全在您的控制之下,但當然,需要處理登錄檔的基礎架構、安全性和維護。或者,市場上提供託管登錄檔,您可以從雲提供商或第三方供應商的服務中獲得免維護的方法。

廣告
© . All rights reserved.