12. ECS,ECR 및 fargate-aws 도커의 기본편 (AWS Certified Developer Associate)
1. 도커란?
앱 배포를 위한 소프트웨어 개발 플랫폼으로 컨테이너 기술이다. 컨테이너에 패키징이 되면 어느 OS든 관계없이 같은 방식으로 실행된다.
즉, 호환성 문제가 없어지고 유지 및 배포가 쉬워진다. 대표적인 사용 사례는 MSA를 사용할 때 사용되고, 온프레미스에서 클라우드로 앱을 리프트-앤-시프트하기도 하고 컨테이너를 실행하는 어떤 경우에도 사용가능하다.
2. Docker images는 어디에 저장될까???? --> Docker Repositories에 저장된다!!
이때 Repositories는 여러 옵션이 있는데 Hub와 ECR에 대해 적어두겠다!
- Docker Hub ( https://hub.docker.com/ )
가장 많이 쓰이는 퍼블릭 레포지토리로 여러 기술에 많는 기본 이미지들을 찾을 수 있다. 예를 들면 Ubuntu,MySQL같은 기본 OS난 DB 이미지들 찾을 수 있어 유용하게 쓰인다.
- Amazon ECR (Amazon ECR Public Gallery https://gallery.ecr.aws)
프라이빗 리포지토리인 Amazon ECR는 비공개 이미지를 실행할 수 있지만 Amazon ECR public Gallery라 불리는 퍼블릭 리포지토리 옵션도 있어 퍼블릭하게도 사용할 수 있다.
3.VM과 Docker의 차이점
Docker와 VM의 가장 큰 차이점은 리스소가 호스트와 공유되어 한서버에 다수의 컨테이너를 공유할 수 있다는 점이다.
아래 그림을 보면 VM과 Docker의 차이점을 볼 수 있는데 MV은 Host OS위에 하이퍼바이저위에 EC2인스턴스를 각각 생성해 게스트OS스와 앱을 시행시킨다. EC2인스턴스는 각자 분리되어있으므로 리소스를 공유하지 않는 것이다.
반면 Docker는 Docker Daemon이란 곳에 다양한 컨테이너를 생성해 앱을 실행시킨다. 이렇게되면 컨테이너들은 네트워킹이나 데이터 등이 공유될수 있다. 이는 보안적으론 덜 안전하지만 하나의 서버에 많은 컨테이너를 실행할 수 있다는 장점을 갖고있다.
4. 도커의 실행 순서
실행순서를 자세히 설명하진 않고 전체적인 숲을 설명해두자! 이는 블로그를 작성하면서 차차 추가하는거로!
먼저 아래 그림을 따라 흐름을 설명하면 가장먼저 Docker는DockerFile을 작성해 컨테이너의 구성을 작성하게된다. 그렇게 작성된 DockerFile을 갖고 Docker Image에 Build하게 되면 도커 이미지가 생성된다. 생성된 이미지 파일을 Docker Hub 또는 ECR에 Push하고 필요할때 해당 이미지를 Pull하고 해당 이미지를 Run(실행)하게 되면 서비스가 배포되는 것이다.
5. AWS에서의 Docker 관리 서비스
- Amazon ECS
Elastic Container Service라고 하며 도커 관리를 위한 전용 플랫폼이다.
- Amazonn EKS
Elastic Kubernetes Service의 약자로 쿠버네티스의 관리형 버전으로 오픈 소스프로젝트이다.
- AWS Fargate
Amazon의 서버리스 컨테이너 플랫폼이다.
- Amazon ECR
컨테이너 이미지를 저장하는 서비스이다.
이번 강의는 짧게 짧게 올리면서 살펴보는거로! 오늘은 여기까지.. ㅎㅎ