あるリポジトリから別のリポジトリにコンテナイメージをコピーする
このトピックでは、ノードがアクセスできないリポジトリからコンテナイメージをプルし、ノードがアクセスできるリポジトリにイメージをプッシュする方法について説明します。イメージを、Amazon ECR またはノードがアクセスできる代替リポジトリにプッシュできます。
前提条件
-
コンピューターにインストールおよび設定された Docker エンジン。詳細については、Docker ドキュメントの「Docker エンジンのインストール
」を参照してください。 -
ご使用のデバイスまたは AWS CloudShell で、AWS CLI のバージョン
2.12.3
以降または1.27.160
以降がインストールおよび設定されていること。現在のバージョンは、aws --version | cut -d / -f2 | cut -d ' ' -f1
で確認できます。macOS のyum
、apt-get
、または 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 Elastic コンテナレジストリ ユーザーガイドの 「Amazon ECR 用の VPC エンドポイントを作成する」を参照してください。
リポジトリからコンテナイメージをプルし、独自のリポジトリにプッシュする場合は、次の手順を完了してください。このトピックで紹介する次の例では、Amazon VPC CNI plugin for Kubernetes メトリクスヘルパー
をユーザー自身の値に置き換えてください。example values
あるリポジトリから別のリポジトリにコンテナイメージをコピーする
-
Amazon ECR リポジトリまたは別のリポジトリがまだ作成されていない場合は、ノードがアクセスできるリポジトリを作成します。次のコマンドは、Amazon ECR プライベートリポジトリを作成します。Amazon ECR プライベートリポジトリ名は文字で始まる必要があります。小文字、数字、ハイフン (-)、アンダースコア (_)、フォワードスラッシュ (/) のみ含むことができます。詳細については、Amazon Elastic Container Registry ユーザーガイドの「プライベートリポジトリの作成」を参照してください。
は、ユーザーが任意で選択する名前に置き換えることができます。ベストプラクティスとして、各イメージに個別のリポジトリを作成します。イメージタグはリポジトリ内で一意である必要があるため、この方法をお勧めします。cni-metrics-helper
を Amazon ECR でサポートされている AWS リージョン に置き換えます。region-code
aws ecr create-repository --region
region-code
--repository-namecni-metrics-helper
-
ノードがプルする必要があるイメージのレジストリ、リポジトリ、およびタグ (オプション) を決めます。この情報は
registry/repository[:tag]
形式です。Amazon EKS のイメージのインストールに関するトピックの多くは、マニフェストファイルを適用するか、Helm チャートを使用してイメージをインストールする必要があります。ただし、マニフェストファイルの適用や、Helm チャートをインストールする前に、まずマニフェストやチャートの
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 に置き換えます。111122223333
を、Amazon ECR プライベートリポジトリを作成した AWS リージョン に置き換えます。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 Elastic Container Registry ユーザーガイドの「レジストリの認証」を参照してください。
aws ecr get-login-password --region
| docker login --username AWS --password-stdinregion-code
111122223333
.dkr.ecr.region-code
.amazonaws.com -
リポジトリにプッシュするイメージを付けます。この例では、最初のステップで作成した Amazon ECR プライベートリポジトリにイメージをプッシュします。詳細については、「Amazon Elastic Container Registry ユーザーガイド」の「Docker イメージのプッシュ」を参照してください。
docker push
111122223333
.dkr.ecr.
/region-code
.amazonaws.comcni-metrics-helper
:v1.12.6
-
プッシュしたイメージ用の
registry/repository:tag
を使用して前のステップでイメージの決定に使用したマニフェストファイルを更新します。Helm チャートを使用してインストールする場合、registry/repository:tag
を指定するオプションが多くあります。チャートをインストールする場合、リポジトリにプッシュしたイメージのregistry/repository:tag
を指定します。