1. ホーム
  2. amazon-web-services

[解決済み] docker イメージを amazon ecs リポジトリにプッシュする

2023-03-12 10:16:02

質問

AWS初心者です。AWSのECSコンテナインスタンスにプライベートDockerリポジトリをセットアップしたいです。私は、リポジトリ名 name . AWSが示す例のプッシュコマンドは動作しています。

aws ecr get-login --region us-west-2 
docker build -t name .
docker tag name:latest ############.dkr.ecr.us-west-2.amazonaws.com/name:latest 
docker push ############.dkr.ecr.us-west-2.amazonaws.com/name:latest

しかし、このコマンドで私は name という名前のイメージをビルドしてプッシュしています。 foo . ということで、コマンドを変更しました。

docker build -t foo .
docker tag foo ###########.dkr.ecr.us-west-2.amazonaws.com/name/foo
docker push ###########.dkr.ecr.us-west-2.amazonaws.com/name/foo

これはうまくいくはずなのですが、うまくいきません。何回か再試行すると、エラーが発生します。

The push refers to a repository [###########.dkr.ecr.us-west-2.amazonaws.com/name/foo]
8cc63cf4528f: Retrying in 1 second
...
name unknown: The repository with name 'name/foo' does not exist in the registry with id '############'

AWSは本当にプッシュしたいイメージごとに専用のリポジトリが必要なのでしょうか?

どのように解決するのですか?

この EC2コンテナレジストリ を必要とします。 イメージレポジトリ を、レジストリに公開したい各画像の "名前" または "名前空間/名前" に対して設定する必要があります。

レジストリに公開する画像は :tags を公開することができます(デフォルトでは100個まで)。

AWSのドキュメントで、リポジトリ -> 画像名のマッピングについて具体的に書かれている箇所は見当たりませんが、暗黙の了解として、以下のように書かれています。 リポジトリの作成 - ECRユーザーガイドのセクション6d

このような場合 Docker Imageの仕様 には リポジトリ

リポジトリ

共通の接頭辞の下にグループ化されたタグのコレクション (名前コンポーネントの前にある : ). 例えば、ある画像に名前 my-app:3.1.4 とタグ付けされた画像では、my-appはその名前のリポジトリコンポーネントです。A リポジトリ名はスラッシュで区切られた名前コンポーネントで構成されます。 オプションで DNS ホスト名を前置詞に持つことができます。ホスト名は標準的な DNS 規則に従わなければなりません。 標準的な DNS 規則に従わなければなりませんが、ホスト名には _ 文字を含むことはできません。ホスト名が存在する場合 が存在する場合、オプションでその後にポート番号の書式を指定することができます。 :8080 . 名前の構成要素には、小文字、数字、およびセパレータを含めることができます。 セパレータを含むことができます。セパレータとは、ピリオド、1つまたは2つのアンダースコア、1つまたは複数のダッシュを指します。 アンダースコア、または1つ以上のダッシュと定義されます。名前コンポーネントは、セパレータで開始または終了することはできません。 セパレータで開始または終了することはできません。