協助改善此頁面
想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將容器映像從一個儲存庫複製到另一個儲存庫
本主題介紹如何從節點無法存取的儲存庫中提取容器映像,並將該映像推送到節點可存取的儲存庫。您可以將映像推送到 Amazon ECR 或節點可存取的替代儲存庫。
必要條件
-
在您的電腦上安裝和設定的 Docker 引擎。如需相關說明,請參閱 Docker 文件中的安裝 Docker 引擎
。 -
已在裝置或 AWS CloudShell 上安裝和設定 AWS Command Line Interface (AWS CLI) 版本
2.12.3
或更新版本,或是版本1.27.160
或更新版本。若要檢查您目前的版本,請使用
。如aws --version | cut -d / -f2 | cut -d ' ' -f1
yum
、apt-get
或適用於 macOS 的 Homebrew 等套件管理工具通常比最新版本的 AWS CLI 落後數個版本之多。若要安裝最新版本,請參閱《AWS Command Line Interface 使用者指南》中的安裝、更新和解除安裝 AWS CLI以及使用 aws configure 的快速組態。AWS CloudShell 中安裝的 AWS CLI 版本也可能比最新版本落後數個版本。若要更新,請參閱《AWS CloudShell 使用者指南》中的安裝 AWS CLI 至您的主目錄。 -
如果您希望節點透過 Amazon 網路推送容器映像到私有 Amazon ECR 儲存庫,或從中提取容器映像,則需使用適用於 Amazon ECR 的介面 VPC 端點。如需詳細資訊,請參閱《Amazon 彈性容器登錄檔使用者指南》中的建立適用於 Amazon ECR 的 VPC 端點。
請完成以下步驟,以從某個儲存庫中提取容器映像,並將其推送到您的儲存庫。在本主題所提供的以下範例中,會提取適用於 Amazon VPC CNI plugin for Kubernetes 指標協助程式
。example values
將容器映像從一個儲存庫複製到另一個儲存庫
-
如果您尚未擁有 Amazon ECR 儲存庫或其他儲存庫,請先建立您的節點可存取的儲存庫。以下命令會建立 Amazon ECR 私有儲存庫。Amazon ECR 私有儲存庫名稱必須以字母開頭。名稱僅能包含小寫字母、數字、連字號 (-)、底線 (_) 和正斜線 (/)。如需詳細資訊,請參閱《Amazon 彈性容器登錄檔使用者指南》中的建立私有儲存庫。
您可以使用您選擇取代
。最佳實務是為每個映像建立個別儲存庫。建議您採取此做法,因為映像標籤在儲存庫中必須是唯一的。使用 Amazon ECR 支援的 AWS 區域 取代cni-metrics-helper
。region-code
aws ecr create-repository --region
region-code
--repository-namecni-metrics-helper
-
判定節點需要提取的映像的登錄檔、儲存庫和標籤 (選用)。此資訊採用
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
檔案,以判定映像位置。例如,適用於 Amazon VPC CNI plugin for Kubernetes 指標協助程式的 values.yaml
檔案包含以下各行。image: region: us-west-2 tag: v1.12.6 account: "602401143452" domain: "amazonaws.com"
-
-
提取清單檔案檔案中指定的容器映像。
-
如果您要從公有登錄檔 (例如 Amazon ECR Public Gallery
) 進行提取,則可以跳到下一個子步驟,因為不需要身分驗證。在此範例中,您將向包含 CNI 指標協助程式映像的儲存庫的 Amazon ECR 私有登錄檔進行身分驗證。 Amazon EKS 會維護 Amazon 容器映像登錄檔 所列每個登錄檔中的映像。您可以使用不同登錄檔的資訊取代
和602401143452
,以對任何登錄檔進行身分驗證。每個支援 Amazon EKS 的 AWS 區域 中都有一個個別的登錄檔。region-code
aws ecr get-login-password --region
region-code
| docker login --username AWS --password-stdin602401143452
.dkr.ecr.region-code
.amazonaws.com -
提取映像。在此範例中,您將從上一個子步驟中所驗證的登錄表中提取。將
和602401143452
取代為您在上一個子步驟中提供的資訊。region-code
docker pull
/cni-metrics-helper:v602401143452
.dkr.ecr.region-code
.amazonaws.com1.12.6
-
-
標記與登錄檔、儲存庫和標籤一起提取的映像。以下範例假設您從清單檔案檔案中提取映像,並將其推送到您在第一個步驟中建立的 Amazon ECR 私有儲存庫。使用您的帳戶 ID 取代
。使用您在其中建立 Amazon ECR 私有儲存庫的 AWS 區域 取代111122223333
。region-code
docker tag cni-metrics-helper:
v1.12.6
111122223333
.dkr.ecr.
/region-code
.amazonaws.comcni-metrics-helper
:v1.12.6
-
對登錄檔進行身分驗證。在此範例中,您需對您在第一個步驟中建立的 Amazon ECR 私有登錄檔進行身分驗證。如需詳細資訊,請參閱《Amazon 彈性容器登錄檔使用者指南》中的登錄檔身分驗證。
aws ecr get-login-password --region
| docker login --username AWS --password-stdinregion-code
111122223333
.dkr.ecr.region-code
.amazonaws.com -
將映像推送到您的儲存庫。在此範例中,您需將映像推送到您在第一個步驟中建立的 Amazon ECR 私有儲存庫。如需詳細資訊,請參閱《Amazon 彈性容器登錄檔使用者指南》中的推送 Docker 映像。
docker push
111122223333
.dkr.ecr.
/region-code
.amazonaws.comcni-metrics-helper
:v1.12.6
-
針對您所推送的映像,使用
registry/repository:tag
更新您在先前步驟中用於確定映像的清單檔案檔案。如果您是使用 Helm Chart 進行安裝,則通常會出現一個可供指定registry/repository:tag
的選項。安裝圖表時,請為推送到儲存庫的映像指定registry/repository:tag
。