AWS Container part.2 (Docker 개요)

2021. 10. 4. 22:36Cloud/AWS 기초

이전 시간은 컨테이너에 대해 알아보았다. 이제 이어서 그 컨테이너를 통해 활용할 수 있는 docker에 대해 알아보는 시간을 가져보자. 왠 귀여운 돌고래가있다. 이 돌고래의 이름은 도커이며 2013년에 탄생하였다. 컨테이너 생성, 저장, 관리 및 실행을 지원하는 '경량 컨테이너 가상화 플랫폼'이며 자동화된 구축, 테스트 및 배포 파이프 라인과 쉽게 통합될 수 있다. 

 

도커의 장점

1. 기본적으로 도커는 휴대용(이동식) 런타임 애플리케이션 환경이다.

2. 애플리케이션 및 해당 종속성을 이미지라는 불변의 단일 패키지화 시킬 수 있다.

3. 컨테이너 이미지를 생성한 후에는 도커가 지원하는 모든 곳으로 이동이 가능하다.

4.서로 다른 종속성과 라이브러리를 가진 여러 애플리케이션을 동시에 실행할 수 있다.

5. 이로 인해 개발 배포 주기가 단축되며 리소스 활용도 및 효율성이 향상된다.

6. 궁극적으로 개발 및 배포 주기를 단축시키는 민첩성을 더하게 해 준다.

 

 

대부분의 응용 프로그램들은 프로그램을 구성하는 코드, 그것에 대한 설정, 종속성 등의 구성요소를 포함하고 있으며 런타임 엔진이 있다. 애플리케이션의 핵심인 코드는 기능을 실행하고 전달하는 기능이다. 에플리케이션이 파이선, NodeJS와 같은 인터프린트 언어를 사용해 빌드된 경우 코드를 해석하기 위해선 반드시 런타임 엔진이 필요하다. 또한 운영프로그렘이 어떻게 작동할지, 데이터베이스 등의 외부 엔드포인트의 위치를 알 수 있는 구성도 필요하다. 이는 환경이 변경될 수 있음을 의미한다. 마지막으로 애플리케이션이 실행되는데 의존하는 종속성이 필요하다. 

 

이런 애플리케이션은 개발자의 PC, 노트북을 시작으로해 각각 다른 환경에서 개발이 이루어 지곤한다. 여기에 대해서는 블리자드사의 '디아블로 시리즈'가 C-19로 인해 자택근무로 따로 글을 작성할 예정이니 참고바란다.

 

어찌됐든 다양한 환경에서도 일관적인 배포 환경을 구성할 수 있어야한다. 이런 이유 때문에 컨테이너를 사용하기 시작했다. 그런데 이 컨테이너를 어떻게 사용해야 할까?


컨테이너는 기본적으로 개발진에게 런타임 엔진, 종속성, 코드를 가져와 일관된 배포 단위로 패키징할 수 있는 기능을 제공한다. 컨테이너의 런타임으로 전달될 수 있으므로 환경별로 변경성을 적용할 수 있다.

컨테이너 이미지라는 생성된 아키텍쳐는 모든 기기, 로컬에서도 실행할 수 있으며 필요한 모든 데이터를 가져올 수 있으므로 적절한 버전, 환경 등 개발자의 의도대로 올바르게 실행이 될 것이라고 확신할 수 있다.

 

대부분의 작업은 이런 컨테이너 이미지로 실행이 된다.

실행되는 컨테이너는 이미지 인스턴스 이다. 컨테이너 이미지는 직접 처음부터 생성되거나 다른 사용자가 생성해 퍼블릭,프라이빗 이미지를 사용할 수 있다. 일반적으로 또 다른 컨테이너 이미지를 기반으로하며 커스터미이징이 가능하다
예를들어 우분투를 기반으로 해서 라이브러리와 웹서버, 에플리케이션을 설정할 수 있다.

컨테이너 이미지의 구성

하단 LV는 시스템 커널이며 커널 위에는 기본 이미지인 bootfs, 컨테이너를 빌드하기 위한 시작점인 컨테이너 이미지이다. 기본 이미지는 우분투 등과 같은 범용(혹은 컨테이너 최적화)이미지를 기반으로 설정할 수 있다. 기본 이미지에는 공통적인 종속성이나 보안 강화 등의 설정이 있다. 이 위에 레이어를 추가하며 이를 통해 기타 항목을 추가할 수 있다. 컨테이너 이미지는 기본 이미지와 여기에 추가한 모든 레이어의 합이 될 수 있다. 컨테이너 이미지는 도커 파일 안의 모든 명령어로 구성되어 있기 때문에 재현가능한 빌드를 쉽게 설정할 수 있다. 도커 명령을 다시 실행할 때마다 모든 레이어가 컨테이너 이미지를 만든다. 이런 컨테이너 이미지는 생성된 후에는 변경할 수 없다. 그렇기에 문제가 발생했을 경우 도커를 변경해 새로운 컨테이너 이미지를 만들어야 한다. 이 후 컨테이너 이미지를 통해 하나의 템플릿의 역할로 시작하게된다. 컨테이너를 시작하게 되면 쓰기가능한 임시레이어가 모든 레이어 위에 추가가 되며 작업을 종료하게 되면 이 레이어는 모두다 삭제가 된다. 마치 RAM과 같은 역할이다.

 

다음 시간에는 도커의 이미지와 컨테이너를 비교하는것으로 시작해 보겠다.

'Cloud > AWS 기초' 카테고리의 다른 글

Amazon BigDATA part.2  (0) 2021.10.12
Amazon Bigdata part.1  (0) 2021.10.10
AWS Container part.1(Container란 무엇일까?)  (0) 2021.10.04
Amazon EC2 Part.3 (공유 파일 시스템)  (0) 2021.09.10
Amazon EC2 Part.2(데이터 저장)  (0) 2021.09.08