Inertia

aws ECS 사용하기

ECS는 EC2 instance를 사용해 container image를 사용할 수 있게 해주는 AWS의 컨테이너 서비스 이다. ECS는 크게 docker registry, Tasks Definition, Clusters 로 구성되어 있다.

docker registory는 docker hub같은 docker image를 저장할 수 있는 서비스인데 private registry서비스 이니 소스코드가 들어간 이미지도 push할 수 있고 secure하다.

Tasks definition은 docker run할때 많은 옵션을 줄 수 있는데 이것을 Tasks definition으로 추상화 한것 이다. 예를 들어 포트 매핑(-p), volume mount, 메모리 제한, network setting 등등..

Clusters는 주어진 클러스터에서 유동적으로 EC2 instance에 명시한 task를 실행할 수 있게 하는 추상화 이다. 어떤 EC2 instance를 사용할지, security group은 무엇을 사용할지, 허용가능한 instance는 몇대나 되는지 등등을 설정할 수 있다.

create docker registry

AWS console > ECS > Repositories > Create repository 에 들어가서 repository 이름을 명시하면 private docker registry를 생성할 수 있다. 이때 읿반적인 docker registry와 다른 점은 이름은 정해져 있다는 것이다. 즉, <registry_ip>/<image_name>:<tag> 에서 image_name<registry_url>/<image_name>은 정해진다는 것. tag만 수정할 수 있다.

이렇게 repository 생성후, 아래 순서로 docker image를 push 하면 된다.

1
2
3
4
5
aws configure # awscli를 사용하려면 access_key와 secret key등록이 되어 있어야 함.
aws ecr get-login --region us-west-2 # 이 명령을 내리면 docker login command가 출력되니, 이 명령으로 docker login을 수행.
docker build -t test . # docer image 빌드
docker tag test:latest <id>.dkr.ecr.us-west-2.amazonaws.com/test:latest # 이름 수정후
docker push <id>.dkr.ecr.us-west-2.amazonaws.com/test:latest # 푸쉬

nginx cluster 띄워 보기

nginx task 생성

에제로 nginx task 를 생성

  1. AWS console > ECS > Task Definitions > Create new Task Definition 에서
    1. task definition name : nginx
    2. network mode: bridge
    3. Add Container click
      1. container name : nginx
      2. Image: nginx:latest
      3. port mapping: 80:80
      4. add click
    4. Create click

docker cluster 생성 및 실행

  1. AWS console > ECS > Clusters > Create Cluster click
    1. cluster name: default
    2. create click
  2. 다시 AWS console > ECS > Task Definitions 로 돌아거서
    1. nginx 선택
    2. nginx:1 선택 후 Actions> Run Task
      1. Cluster에 아까 생성했던 cluster인 default 기입
      2. Run task 클릭
  3. 이렇게 하면 클러스터에 다커 이미지가 몇분이 흐른후 띄게 된다.
  4. EC2 메뉴로 가서 해당 ip로 접속을 해보면 nginx 서버가 떠 있다는 웹페이지가 열릴것이다.

Reference