[AWS] Docker ECS-CLI를 사용하여 도커 띄우기

Harry The Great
해리의 유목코딩
4 min readMay 18, 2018

도커를 AWS 서비스에서 쉽게 관리할 수 있도록 만든 서비스로 각 도커의 상태, 에러로그 그리고 도커 컨테이너 관리를 AWS web interface 환경과 AWS CLI를 통해 관리할 수 있습니다. 도커가 많은경우 혹은 도커의 에러메세지등을 관리해야 하는경우 ECS를 사용하면 쉽게 에러 메세지등을 체크할 수 있고 오토스케일링 더 나아가 블루 그린 deploy등 다양한 Dev-Ops 환경을 손쉽게 구현할 수 있습니다.

ECS-CLI란?

ECS-CLI는 ECS를 GUI 환경이 아닌 command line interface를 통해 쉽게 구성할 수 있도록 도와줍니다.

configure 설정하기

보통 도커를 하고나면 컨테이너, 이미지등을 알겠는데 ECS-CLI를보면 Task, ECR, Service등 온갖 여러운 이야기들이 많습니다. 또한 요기서부터 용어에 대한 문제로 많이 헷갈리게 됩니다.

cluster 옵션

클러스터는 하나의 전체 오케스트레이션을 뜻합니다. 즉 Docker-composer를 쓰신다면 그 안에 들어가있는게 전체 클러스터라고 볼 수 있습니다. 이 클러스터는 복수개의 EC2 인스턴스로 구성될 수 있으며 역시 복수개의 Docker Container들로 구성될 수 있습니다. 위 명령어에서 ecs-cli configure를 통해 나는 node-mongo라는 클러스터를 만들것이고 지역은 서울로 한다고 되어있습니다.

default-launch-type 옵션

default-lanch-type에서는 ec2로 되어있는데 크게 ec와 fargate로 나뉘어집니다. fargate는 도커 호스트 마져도 가상화를 하여 오로지 도커 인스턴스만 관리할 수 있게 만든 서비스로 현재는 버지니아 북부만 서비스하고 있습니다. 또한 가격 역시 ec2로 구동하였을때보다는 더 비싸게되지만 실질적으로 유틸리티를 100% 구현할 수 있다는 점에서 아주 매력적인 서비스입니다. 추후 서울이 출시된다면 사용해볼 수 있겠지만 그렇지 않으므로 ec2를 설정하여줍니다.

config-name 옵션

지금까지 작성한 configure의 이름을 node-mongo로 설정해준다는 의미입니다.

profile 만들기

deploy를 위해 access key와 secretkey 그리고 조금 전 설정하여 주었던 profile-name을 입력하여줍니다.

configure default로 config를 설정하여줍니다. 이렇게 할 경우 따로 입력 없이 자동으로 node-mongo로 세팅이 되며 맨 처음 configure를 세팅한경우 default값이 없을경우 처음 입력한 configure가 default값으로 들어가게됩니다.

up 명령어

지금까지 입력한 명령어들이 configure들이었다면 이번에는 실제로 인스턴스가 올라가는 명령어입니다. ecs-cli는 ecs-cli composer up 명령어와 ecs-cli up 명령어로 나뉘게 되는데 두 명령어의 차이는 전자가 docker-compose up과 같은 명령어를 수행한다면 ecs-cli up은 얼마만큼의 ec2를 사용할지를 지정하여줍니다.

capability-iam 옵션은 위 명령어가 ec2를 만들 수 있다고 정의해주며 t2.micro를 1개를 올리게됩니다.

composer up 명령어

이제 실질적인 docker composer up과 같은 명령어가 실행되면 해당 정의된 파일에서의 docker isntace들이 올라가게됩니다.

예시파일

도커 이미지가 바뀌는 경우 ECR에서 이미지를 바뀌게 될경우 ecs-cli compose down, ecs-cli compose up 명령어를 통해 다른 이미지로 재구동할 수 있으며 도커 이미지 빌드의 경우 AWS code build와 Lambda를 이용하면 더 쉽게 자동화 할 수 있습니다.

--

--

Harry The Great
해리의 유목코딩

Android & IOS Developer 😀 미디움 이외에 스니펫이나 디버그노트로 활용하는 https://www.harrymikoshi.com/ 블로그도 운영하고있습니다.