도커와 쿠버네티스
이번 프로젝트를 진행하며 쿠버네티스에 대한 이해가 필요해져 사내 스터디를 진행한 적이 있다(아마 6~7월경에 마무리 했던것 같다). 당시 작성해둔 PT자료를 보며 복습도 하고 내 스스로 정리를 다시 해보고자 블로깅을 한다.
P.S 이 글은 "시작하세요! 도커/쿠버네티스" 책을 보고 공부한 내용입니다.
도커란 무엇인가?
도커(Docker)란 리눅스 컨테이너를 기반으로 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만든 오픈소스 프로젝트이다.
가상화 머신과 Docker Container 비교
- VM
- 가상머신마다 전용 운영체제(Guest OS)를 별도로 가진다.
- 하이퍼바이저를 거쳐야 하기 때문에 성능의 손실이 발생할 수 있다.
- VM을 통해 제공하는 애플리케이션과 함께 운영체제 및 관련 도구들이 포함되어 공간을 많이 차지할 수 있다.
- 운영체제의 패치가 일어날 경우 Host OS는 물론 Guest OS 역시 별도로 패치해야 한다.
- Docker Container
- 운영체제는 Host OS를 따르며 리눅스 자체 기능을 사용해 프로세스 단위의 격리된 환경을 만든다.
- 애플리케이션을 구동하는 데 필요한 라이브러리, 실행 파일만 존재 하기 때문에 비교적 적은 용량을 차지한다.
- Host OS만 패치 해주면 된다.
Docker Image
- 이미지란 컨테이너 실행에 필요한 파일, 설정값들을 포함한 계층 구조의 바이너리 파일이다.
- 이미지는 절대 변하지 않는다.
- 예를 들어, 배포한 컨테이너를 통해 상태나 정보를 바꾸고 삭제하더라도 이미지에는 아무 영향을 미치지 않는다.
- 이는 동일한 구성의 애플리케이션을 한 서버든, 여러 서버든 똑같이 제공할 수 있음을 의미한다.
Docker image의 계층구조
- 도커 이미지는 관리의 효율성을 위하여 layer라는 개념을 사용한다.
- 예를 들어, 어떤 이미지 상에서 특정 레이어만의 변화만 일어난다면, 해당 레이어만 새로 다운이 진행되게 된다.
- 컨테이너를 기반으로 새로운 이미지를 만들 때도, R/W layer의 내용만 상위 layer로 추가되어 사용자가 추가한 내용에 대해서만 쉽게 관리할 수 있다.
도커의 이점
- 독립성: Host OS, 다른 컨테이너와 독립된 공간이기 때문에 외부 환경의 변화에 독립적이다.
- 쉬운 배포: 컨테이너 내부에서 소스 등의 여러 작업을 마친 뒤 배포하기 위해서는 이미지만 만들어 전달하면 된다.
- MSA: 도커는 여러 애플리케이션이 독립적으로 구성되고 여러 환경이나, 언어에 구애 받지 않기 때문에 MSA에 적합하다고 할 수 있다.
다음 예고
다음 주에는 실제 도커를 실행하고 볼륨을 생성 하는 등 실제 사용하는 실습 방법으로 돌아오겠습니다~!