UFO ET IT

Docker 이미지를 Amazon ECS 리포지토리로 푸시

ufoet 2020. 12. 8. 20:28
반응형

Docker 이미지를 Amazon ECS 리포지토리로 푸시


저는 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에 암시되어 있습니다.

도커 이미지 스펙 (A)의 그것의 정의에 포함 저장소

저장소

공통 접두사 (앞의 이름 구성 요소 :)로 그룹화 된 태그 모음입니다 . 예를 들어 이름으로 태그가 지정된 이미지 my-app:3.1.4에서 my-app은 이름의 Repository 구성 요소입니다. 리포지토리 이름은 슬래시로 구분 된 이름 구성 요소로 구성되며 선택적으로 DNS 호스트 이름이 접두사로 붙습니다. 호스트 이름은 표준 DNS 규칙을 준수해야하지만 _문자를 포함 할 수 없습니다 . 호스트 이름이있는 경우 선택적으로 뒤에 형식의 포트 번호가 올 수 :8080있습니다. 이름 구성 요소에는 소문자, 숫자 및 구분 기호가 포함될 수 있습니다. 구분 기호는 마침표, 하나 또는 두 개의 밑줄 또는 하나 이상의 대시로 정의됩니다. 이름 구성 요소는 구분 기호로 시작하거나 끝날 수 없습니다.


각 이미지 이름에 대한 저장소를 만들어야하지만 이미지 이름은 "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

이미지별로 저장소를 만들 필요가 없으며 이름을 재구성하기 만하면됩니다.

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

참고 URL : https://stackoverflow.com/questions/37540921/push-docker-image-to-amazon-ecs-repository

반응형