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 | aws configure # awscli를 사용하려면 access_key와 secret key등록이 되어 있어야 함. |
nginx cluster 띄워 보기
nginx task 생성
에제로 nginx task 를 생성
- AWS console > ECS > Task Definitions > Create new Task Definition 에서
task definition name
: nginxnetwork mode
: bridgeAdd Container
clickcontainer name
: nginxImage
: nginx:latestport mapping
: 80:80add
click
Create
click
docker cluster 생성 및 실행
- AWS console > ECS > Clusters > Create Cluster click
cluster name
: defaultcreate
click
- 다시 AWS console > ECS > Task Definitions 로 돌아거서
- nginx 선택
- nginx:1 선택 후 Actions> Run Task
- Cluster에 아까 생성했던 cluster인 default 기입
Run task
클릭
- 이렇게 하면 클러스터에 다커 이미지가 몇분이 흐른후 띄게 된다.
- EC2 메뉴로 가서 해당 ip로 접속을 해보면 nginx 서버가 떠 있다는 웹페이지가 열릴것이다.