將容器映像從一個儲存庫複製到另一個儲存庫 - Amazon EKS

協助改善此頁面

想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後在 上選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合所有人。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將容器映像從一個儲存庫複製到另一個儲存庫

本主題介紹如何從節點無法存取的儲存庫中提取容器映像,並將該映像推送到節點可存取的儲存庫。您可以將映像推送至 Amazon ECR或節點可存取的替代儲存庫。

必要條件
  • 所以此 Docker 在電腦上安裝和設定引擎。如需指示,請參閱安裝 Docker 中的引擎 Docker 文件中)。

  • 在您的裝置或 上安裝和設定的 1.27.160 AWS Command Line Interface (AWS CLI) 版本 2.12.3或更新版本 AWS CloudShell。若要檢查您目前的版本,請使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。套件管理員yum,例如 apt-get、 或 Homebrew for macOS 通常是最新版本 後面的幾個版本 AWS CLI。若要安裝最新版本,請參閱使用 安裝、更新和解除安裝 AWS CLI快速組態 aws configure (在 AWS Command Line Interface 使用者指南中) 安裝在 中的 AWS CLI 版本 AWS CloudShell 也可能是最新版本後面的幾個版本。若要更新它,請參閱 AWS CloudShell 使用者指南 中的安裝 AWS CLI 到您的主目錄

  • ECR 如果您想要節點透過 Amazon 網路從容器映像提取容器映像或將容器映像推送至私有 Amazon ECR儲存庫,Amazon 的介面VPC端點。如需詳細資訊,請參閱 Amazon Elastic Container Registry 使用者指南中的為 Amazon 建立VPC端點ECR

請完成以下步驟,以從某個儲存庫中提取容器映像,並將其推送到您的儲存庫。在本主題提供的下列範例中, Amazon VPC CNI plugin for Kubernetes 指標協助程式已提取。當您依照以下步驟操作時,請務必使用您的值取代 example values

將容器映像從一個儲存庫複製到另一個儲存庫
  1. 如果您還沒有 Amazon ECR儲存庫或其他儲存庫,請建立節點可存取的儲存庫。下列命令會建立 Amazon ECR私有儲存庫。Amazon ECR私有儲存庫名稱必須以字母開頭。名稱僅能包含小寫字母、數字、連字號 (-)、底線 (_) 和正斜線 (/)。如需詳細資訊,請參閱《Amazon 彈性容器登錄檔使用者指南》中的建立私有儲存庫

    您可以使用您選擇取代 cni-metrics-helper。最佳實務是為每個映像建立個別儲存庫。建議您採取此做法,因為映像標籤在儲存庫中必須是唯一的。region-codeAWS 區域 Amazon 支援的 取代 ECR

    aws ecr create-repository --region region-code --repository-name cni-metrics-helper
  2. 判定節點需要提取的映像的登錄檔、儲存庫和標籤 (選用)。此資訊採用 registry/repository[:tag] 格式。

    許多有關安裝映像的 Amazon EKS主題需要您套用資訊清單檔案或使用 Helm Chart 安裝映像。然而在套用清單檔案檔案或安裝 Helm Chart 之前,請檢視清單檔案的內容或圖表的 values.yaml 檔案。如此一來,您可以判定要提取的登錄檔、儲存庫和標籤。

    例如,您可以在 的清單檔案中找到以下行 Amazon VPC CNI plugin for Kubernetes 指標協助程式 。登錄檔是 602401143452.dkr.ecr.us-west-2.amazonaws.com,這是 Amazon ECR私有登錄檔。儲存庫為 cni-metrics-helper

    image: "602401143452.dkr.ecr.us-west-2.amazonaws.com/cni-metrics-helper:v1.12.6"

    您可能會看到如以下映像位置的變化:

    • 僅有 repository-name:tag。在這種情況下, docker.io 通常是登錄檔,但由於 Kubernetes 如果未指定登錄檔,則預設會將其附加到儲存庫名稱。

    • repository-name/repository-namespace/repository:tag。儲存庫命名空間為選用,但有時會由儲存庫擁有者指定,以將映像分類。例如,Amazon ECR Public Gallery 中的所有 Amazon EC2映像都會使用aws-ec2命名空間。

    在使用 Helm 安裝映像之前,請檢視 Helm values.yaml 檔案,以判定映像位置。例如, values.yaml的檔案 Amazon VPC CNI plugin for Kubernetes 指標協助程式包含下列行。

    image: region: us-west-2 tag: v1.12.6 account: "602401143452" domain: "amazonaws.com"
  3. 提取清單檔案檔案中指定的容器映像。

    1. 如果您要從公有登錄檔中提取,例如 Amazon ECR Public Gallery ,您可以跳至下一個子步驟,因為不需要身分驗證。在此範例中,您會驗證 Amazon ECR私有登錄檔,其中包含CNI指標協助程式映像的儲存庫。Amazon 會在 中列出的每個登錄檔中EKS維護映像查看 Amazon 容器映像註冊表 Amazon EKS 附加組件。您可以使用不同登錄檔的資訊取代 602401143452region-code,以對任何登錄檔進行身分驗證。AWS 區域 Amazon 在 中EKS支援的每個登錄檔都存在。

      aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 602401143452.dkr.ecr.region-code.amazonaws.com
    2. 提取映像。在此範例中,您將從上一個子步驟中所驗證的登錄表中提取。602401143452region-code 取代為您在上一個子步驟中提供的資訊。

      docker pull 602401143452.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.12.6
  4. 標記與登錄檔、儲存庫和標籤一起提取的映像。下列範例假設您從資訊清單檔案提取映像,並將將它推送到您在第一個步驟中建立的 Amazon ECR私有儲存庫。使用您的帳戶 ID 取代 111122223333region-code將 取代為您在其中建立 Amazon ECR私有儲存庫 AWS 區域 的 。

    docker tag cni-metrics-helper:v1.12.6 111122223333.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.12.6
  5. 對登錄檔進行身分驗證。在此範例中,您會驗證您在第一個步驟中建立的 Amazon ECR私有登錄檔。如需詳細資訊,請參閱《Amazon 彈性容器登錄檔使用者指南》中的登錄檔身分驗證

    aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 111122223333.dkr.ecr.region-code.amazonaws.com
  6. 將映像推送到您的儲存庫。在此範例中,您將映像推送到您在第一個步驟中建立的 Amazon ECR私有儲存庫。如需詳細資訊,請參閱推送 Docker Amazon Elastic Container Registry 使用者指南中的映像

    docker push 111122223333.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.12.6
  7. 針對您所推送的映像,使用 registry/repository:tag 更新您在先前步驟中用於確定映像的清單檔案檔案。如果您是使用 Helm Chart 進行安裝,則通常會出現一個可供指定 registry/repository:tag 的選項。安裝圖表時,請為推送到儲存庫的映像指定 registry/repository:tag