web-dev-qa-db-ja.com

DockerイメージをAmazon ECSリポジトリにプッシュする

AWSは初めてです。 AWS ECSコンテナインスタンスにプライベートドッカーリポジトリを設定したい。 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は本当にプッシュしたいすべての画像に専用のリポジトリを必要としますか?

57
Ohmen

EC2 Container Registry では、レジストリに公開する各イメージ「名前」または「名前空間/名前」に対して イメージリポジトリ を設定する必要があります。

ただし、各リポジトリで任意の:tagsを公開できます(デフォルトの制限は100タグです)。

リポジトリについて具体的に述べているAWSのドキュメントでは見たことがありません->イメージ名マッピング リポジトリの作成-ECRユーザーガイドのセクション6d

Docker Image spec には、Repositoryの定義が含まれます

リポジトリ

共通のプレフィックス(:の前の名前コンポーネント)の下にグループ化されたタグのコレクション。たとえば、my-app:3.1.4という名前のタグが付けられた画像では、my-appは名前のリポジトリコンポーネントです。リポジトリー名は、スラッシュで区切られた名前コンポーネントで構成され、オプションでDNSホスト名が接頭辞として付けられます。ホスト名は標準のDNS規則に準拠する必要がありますが、_文字を含めることはできません。ホスト名が存在する場合、オプションで:8080形式のポート番号が後に続く場合があります。名前コンポーネントには、小文字、数字、および区切り文字が含まれる場合があります。区切り文字は、ピリオド、1つまたは2つのアンダースコア、または1つ以上のダッシュとして定義されます。名前コンポーネントは、区切り文字で開始または終了することはできません。

59
Matt

イメージ名ごとにリポジトリを作成する必要がありますが、イメージ名は「mycompanyname/helloworld」の形式にすることができます。したがって、mycompanyname/app1mycompanyname/app2など

aws ecr create-repository --repository-name mycompanyname/helloworld
aws ecr create-repository --repository-name mycompanyname/app1
aws ecr create-repository --repository-name mycompanyname/app2
docker tag helloworld:latest xxxxxxxx.dkr.ecr.us-west-2.amazonaws.com/mycompanyname/helloworld:latest
docker Push xxxxxxxx.dkr.ecr.us-west-2.amazonaws.com/mycompanyname/helloworld:latest
docker tag app1:latest xxxxxxxx.dkr.ecr.us-west-2.amazonaws.com/mycompanyname/app1:latest
docker Push xxxxxxxx.dkr.ecr.us-west-2.amazonaws.com/mycompanyname/app1:latest
23
ecerulm