What is Docker?
- 도커는 앱 배포를 위한 소프트웨어 개발 플랫폼이고, 컨테이너 기술이다.
- 컨테이너에 앱이 패키징되는데 컨테이너는 표준화되어 있어서 아무 운영체제에나 실행할 수 있다.
- 앱이 컨테이너에 패키징되면 어느 운영체제에서든 같은 방식으로 실행된다.
- 행위 특성도 예측 가능해서 작업을 덜어주고 유지 및 배포가 쉽고 언어, 운영체제, 기술에 상관 없이 실행이 가능하다.
- 사용 사례
- 마이크로서비스 아키텍처가 있다.
- 온프레미스에서 클라우드로 앱을 리프트-앤-시프트하기도 하고 컨텐이너를 실행하는 어떤 경우에도 사용할 수 있다.
Docker on an OS
- 도커는 운영체제에서 어떻게 작동할까?
- 우선 서버가 있고, EC2 인스턴스를 예를 들었는데 어떤 유형의 서버든 똑같다.
- 도커 에이전트를 실행하면 도커 컨테이너를 시작할 수 있다.
- 첫 번째 도커 컨테이너는 Java 애플리케이션을 포함하고, 두 번째 도커 컨테이너에는 Node.js 애플리케이션 있다고 가정해보면, 다수의 도커 컨테이너가 동시에 실행될 수 있어서 Java 애플리케이션을 가진 여러 도커 컨테이너가 있을 수 있다.
- Node.js 애플리케이션을 가진 도커 컨테이너도 여러 개 있을 수 있다.
- 도커 내에서 MySQL등의 데이터베이스도 실행가능하니 다용도로 활용된다.
- 서버 관점에서는 모두 도커 컨테이너로 보인다.
도커 이미지는 어디에 저장할까?
- Docker Repositories이다.
- 여러 옵션이 있는데
- 첫 번째 옵션인 'Docker Hub'는 아주 유명한 퍼블릭 레포지토리로, 많은 기술에 맞는 기본 이미지를 찾을 수 있다. Ubuntu나 MySQL과 같은 OS용 기본 이미지도 마찬가지이다.
- 두 번째 옵션, 프라이빗 레포지토리로 Amazon ECR (Elastic Container Registry) 비공개 이미지를 실행 할 수 있지만, Amazon ECR Public Gallery라 불리는 퍼블릭 레포지토리 옵션도 있다.
Docker와 Virtual Machines의 차이점
- 도커 역시 가상화 기술의 일종이긴 하지만 순전히 가상화 기술은 아니다.
- 리소스가 호스트와 공유되어 한 서버에서 다수의 컨테이너를 공유할 수있다.
- 가상 머신의 아키텍처를 살펴보면, 인프라와 호스트 운영체제가 있으며 그 위에 하이퍼바이저가 있고 앱과 Gusest 운영 체제가 있다. EC2의 원리이다.
- EC2 머신은 하이퍼바이저에 실행되는 가상 머신과도 같다. 그래서 Amazon이 EC2 인스턴스를 다양한 소비자에게 제공 할 수 있으며 가상 머신의 EC2 인스턴스는 각자 분리되어 있다. 리소스를 공유하지 않는 것이다.
- 반면, 도커 컨테이너의 경우 인프라와 EC2 인스턴스 같은 호스트 OS가 있고, 도커 Daemon 위에 많은 컨테이너가 있다.
- 도커 Daemon에서 가볍게 실행되는 컨테이너라 공존할 수 있는 것이다.
- 네트워킹이나 데이터 등을 공유할 수도 있다.
- 가상 머신보다 덜 안전하지만 하나의 서버에 많은 컨테이너를 실행할 수 있기 때문에 도커 컨테이너를 많이 사용한다.
Docker를 시작하려면
- 우선 도커 컨테이너를 구성하는 파일인 Dockerfile을 작성해야 한다.
- 베이스 도커 이미지에 몇 가지 파일을 추가해서 구축하면 도커 이미지가 된다.
- 도커 이미지는 푸시(push)를 해서 도커 레포지토리에 저장할 수 있다.
- 퍼블릭 레포지토리인 Docker Hub에 푸시하거나 Amazon 버전의 도커 레포지토리인 Amazon ECR에 푸시한다.
- 나중에 도커 레포지토리에서 이미지를 가져와서 실행하게 되는데 도커 이미지를 실행하면 도커 컨테이너가 되고 도커를 구축할 때 사용했던 코드를 실행할 것이다.
AWS에서 Docker를 어떻게 관리하는지?
- 첫 번째는 Amazon ECS (Elastic Container Service)이다.
- 도커 관리를 위한 Amazon의 전용 플랫폼이다. - 두 번째는 Amazon EKS (Elastic Kubernetes Service)이다.
- Kubernetes의 관리형 버전으로 오픈 소스 프로젝트이다. - 세 번째는 AWS Fargate이다.
- Amazon의 서버리스 컨테이너 플랫폼으로 ECS와 EKS 둘 다 함께 작동할 수 있다. - 네 번째는 Amazon ECR이다.
- 컨테이너 이미지를 저장하는데 사용한다.
'AWS(Amazon Web Service)' 카테고리의 다른 글
[AWS] AWS's containers - ECS Service Auto Scaling (0) | 2024.12.03 |
---|---|
[AWS] AWS's containers - ECS (0) | 2024.12.02 |
[AWS] AWS Integration & Messaging - Amazon MQ (0) | 2024.11.30 |
[AWS] SQS vs SNS vs Kineseis (0) | 2024.11.29 |
[AWS] AWS Integration & Messaging - Kinesis와 SQS FIFO에 대한 데이터 정렬 (0) | 2024.11.28 |