일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 실사용
- Linux
- clone
- 하나머니
- python3
- 토스카드
- docker
- 리워드앱
- MongoEngine
- docker network
- 포인트앱
- AWS
- namespace
- Container
- mininet
- 후기
- S3
- 앱테크
- 도커
- VPC
- 재테크
- network
- DocumentDB
- MongoDB
- Python
- 리뷰
- aws codecommit
- codecommit
- 커피머니불리기
- built-in
- Today
- Total
ㅍㅍㅋㄷ
AWS EC2 Container Registry(ECR) 어렵지 않아요 본문
AWS EC2 Container Registry(ECR) 어렵지 않아요
ECR (EC2 Container Registry) 은 Docker Container 의 이미지를 저장하는 Repository 서비스이다. 기능은 Docker hub 의 Repository 서비스와 동일하다. 특별한건 없다. Docker Private Repository 구축하고 관리 하는 수고를 AWS 에 맡기는 Managed 서비스일 뿐이다.
장점이라고 한다면,
Container 이미지를 S3 에 저장하기 때문에 고가용성이 유지되고, AWS IAM 인증을 통해 이미지 push/pull 에 대한 권한 관리가 가능하다는 것이다.
하지만, 아직 Seoul 리전뿐 아니라 Tokyo 에서도 미지원 되고 있고 Virginia 나 Oregon, Ireland 에서만 가능하다. (2016.6.24 기준) 하지만 이미지를 push/pull 할때만 access 하기 때문에 리전이 멀더라도 큰 불편함은 없다. (어차피 Docker hub 도 해외에 있다. 체감상 차이 없다;)
이제 실제 ECR을 사용해 보자.
ECR 설정
1. 먼저 Virginia 리전(또는 Oregon, Ireland 리전) 에 접속한다.
2. ECR 은 따로 메뉴가 있지 않고 ECS(EC2 Container Service) 하위 메뉴에 있다. ECS 메뉴로 go.
아마 처음 ECS 를 사용하면 아래와 같이 Wizard 로 연결된다. 일단 Get Started 클릭
3. Wizard에서는 먼저 ECS(EC2 Container Service) 를 만들게끔 유도하는데 ECR 만 사용하려면 ECS 는 나중에 만들어도 된다. 일단 wizard 는 cancel 한다.
4. Cancel 하고 나면 왼쪽 메뉴에서 Repositories 를 선택할 수 있다. Repositories 를 선택 후 Create 한다.
5. Repository 이름을 지정후 Create 한다.
테스트로 repo-test 라는 이름으로 생성하였다.
6. 이제 Docker host 에서 ECR 로 이미지를 업로드할 수 있도록 설정을 해야한다.
먼저 Docker host 에 aws cli 툴을 설치하고 ECR 로 접근 할 수 있도록 user를 생성해 cli 에 설정해 주자.
user 명은 ecs_user 로 생성하였고, 아래와 같이 permission에 policy를 주었다.
ECR 만 쓰려면, AmazonEC2ContainerRegistryFullAccess Policy 만 적용해 주면 된다.
7. docker host 에 aws cli를 설치한다. aws ecr 명령을 사용하려면 최신 cli 버전을 설치해야 한다. 최신 버전을 설치 하려면 pip 로 설치하면 된다.
root@~~# pip install awscli
ecr 을 사용할 수 있는지 확인하려면 아래와 같이 help 를 했을때 manual 이 나오는지 확인한다.
root@~~# aws ecr help
8. 이제 aws cli 에 access key 와 secret key 를 설정한다. 위에서 ecs_user 만들때 생성된 key 값을 넣어준다.
root@~~# aws configure
AWS Access Key ID [None]: YOURACCESSKEY
AWS Secret Access Key [None]: YOURSECRETKEY
Default region name [None]: us-east-1 (virginia 로 가정)
Default output format [None]: json
9. aws cli 설정을 완료 했다면, 위에서 생성한 repository 에 접근할 수 있도록 설정한다. 먼저 ecr 에 login 한다. region 은 virginia 를 기준으로 us-east-1 로 하였다.
root@~~# aws ecr get-login --region us-east-1
docker login -u AWS -p XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -e none https://XYZXYZXYZXYZ.dkr.ecr.us-east-1.amazonaws.com
위와 같이 login 을 요청하면, 위에서 생성한 ECR repository에 접속할 수 있는 docker login 명령어를 암호화 키값과 함께 리턴해 준다. 이것을 그대로 복사해 repository 에 접속하도록 한다.
root@~~# docker login -u AWS -p XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -e none https://XYZXYZXYZXYZ.dkr.ecr.us-east-1.amazonaws.com
Warning: '-e' is deprecated, it will be removed soon. See usage.
Login Succeeded
위와 같이 Login 에 성공 했다는 메시지가 나오면 성공.
10. 이제 image 를 ECR repository 에 업로드 해보자. 그러려면 docker host 의 Local 에 먼저 image 를 만든 후 이 image를 ECR Repository에 올려야 한다. 아래는 local 에 ubuntu image 가 있음을 가정 후 이 image 를 ECR 에 올리는 작업을 해보자.
root@~~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 54060fb55e83 15 months ago 188.3 MB
먼저 이 ubuntu image 의 repository 정보를 ECR Repository URL 로 변경한다. 변경은 docker tag 명령을 이용하면 된다.
root@~~# docker tag ubuntu:latest XYZXYZXYZXYZ.dkr.ecr.us-east-1.amazonaws.com/repo-test:latest
변경 후 image 정보를 다시 확인해 보면, 아래와 같이 image 의 repository 정보가 ECR Repository URL로 변경된 것을 확인할 수 있다.
root@~~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
XYZXYZXYZXYZ.dkr.ecr.us-east-1.amazonaws.com/repo-test latest 54060fb55e83 15 months ago 188.3 MB
이제 image 를 ECR repository로 업로드 하자.
업로드 명령은 docker push 를 사용한다.
root@~~# docker push XYZXYZXYZXYZ.dkr.ecr.us-east-1.amazonaws.com/repo-test:latest
The push refers to a repository [XYZXYZXYZXYZ.dkr.ecr.us-east-1.amazonaws.com/repo-test]
5f70bf18a086: Pushed
e8061ac24ae3: Pushed
3c84ae1bbde2: Pushed
8ceab61e5aa8: Pushing [===============> ] 56.58 MB/188.1 MB
위와 같이 image 가 upload 되는 것을 볼 수 있다.
이제 AWS console 을 통해 업로드된 image를 확인해 보자.
위와 같이 repo-test 에 latest 로 tag된 image 가 업로드된 것을 볼 수 있다.
11. ECR 에 있는 image 를 dokcer host 에 내려 받으려면 아래와 같이 이용하면 된다.
root@~~# docker pull XYZXYZXYZXYZ.dkr.ecr.us-east-1.amazonaws.com/repo-test:latest
[ 참고 ]
- http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_Console_Repositories.html
'IT > AWS' 카테고리의 다른 글
AWS KMS 어렵지 않아요. (6) | 2019.05.14 |
---|---|
AWS EC2 Container Service(ECS) (1) - 구조와 특징 (4) | 2016.06.20 |
AWS VPC를 디자인해보자(4) - VPC Peering을 활용한 Multi VPC 사용하기 (4) | 2016.06.20 |
AWS VPC를 디자인해보자(3) - NAT Gateway 와 Bastion host (3) | 2016.06.16 |
AWS VPC를 디자인해보자(2) - ACL과 Security Group을 활용한 보안 강화 (10) | 2016.06.13 |