안녕하세요, 일루넥스 개발팀 최수만 입니다.
오늘은 ECS를 사용하기 위해서 ECR을 먼저 사용하기에, 그에 관하여 설명하겠습니다.
ECR이란 개발자가 Docker 컨테이너 이미지를 손쉽게 저장, 관리 및 배포할 수 있게 해주는
완전관리형 Docker 컨테이너 레지스트리입니다. (공식 홈페이지에서 발췌)
전에는 우리가 개발을 할때 각각의 컴퓨터에서 개발하고 그것과 동일한 환경을 서버에 세팅하고
그 후 jar, war 혹은 git등을 사용해서 인스턴스에 내려받고 그것을 실행해서 서버를 운영했습니다.
사실 개발보다 동일한 환경을 만드는게 더 힘들었죠.
또 auto scale등의 작업도 편하게 할 수 있게 되었습니다. 전에는 서버를 스냅샷으로 만들어서 auto scale 설정을 하고
이것을 모니터링 해서 서버의 요청등이 한계치에 다다르게 되면 새로운 서버를 운영해서 스냅샷으로 작동시켰죠
그런데 이것이 도커의 등장으로 인해 그 개념이 바뀌게 되었습니다.
도커의 이미지는 어느 환경 어느 운영체제의 서버에서 격리되어 작동하므로 외부의 환경에 영향을 받지 않습니다.(단 포트등은 예외네요)
또한 이것은 서버를 유연하게 운용할 수 있게 해줘서 위에서 개발자가 신경썼어야 하는 모든 부분을 다 도커가 대신하게 되었습니다.
그리고 위의 운영적인 부분을 발전시킨게 바로 쿠버네티스가 되겠습니다.
아래 그림은 우리가 개발을 해서 배포하기 까지의 과정을 나타내는 이미지입니다.
위의 이미지를 간단히 말하면 다음과 같습니다.
여기서 ECR의 기능은 저장소에 해당한다고 볼 수 있습니다. 여기까지 해서 간단하게 ECR의 역활이 무엇인지 알아보았습니다.
아래의 실습조건은 우선 aws cli에 접속할 수 있는 계정과 aws cli는 설치후 configure까지 완료했다는 전제하에 시작하겠습니다.
# 레지스트리에 접속하기
aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 000000000000.dkr.ecr.ap-northeast-2.amazonaws.com
# 도커 빌드하기 이건 node나 java의 경우 각기 다르므로 맞춰서 작성하시면 됩니다.
docker build -t web .
# 태그 하기 이 태깅한 레포지토리를 업로드 합니다.
docker tag web:latest 000000000000.dkr.ecr.ap-northeast-2.amazonaws.com/web:latest
# 푸시하기
docker push 000000000000.dkr.ecr.ap-northeast-2.amazonaws.com/web:latest
#AWS ECR에 접속하자
aws ecr get-login --region ap-northeast-2 --no-include-email
# 다음과 같은 메세지가 나온다. 이것을 전체 복사해서 붙어넣기 후 실행하자.
docker login -u AWS -p ~~~~~~~~~~~ https://000000000000.dkr.ecr.ap-northeast-2.amazonaws.com
# 다음과 같은 메세지가 나온다
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/ubuntu/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
# 이제 이러면 ECR에서 해당 컨테이너를 다운받을 수 있다.
docker pull 000000000000.dkr.ecr.ap-northeast-2.amazonaws.com/web:latest
지금까지 ECR에 대해 알아보았습니다.
읽어주셔서 감사합니다.