먼저 컨테이너란, 우리가 구동하려는 애플리케이션을 실행할 수 있는 환경까지 감싸서, 어디서든 쉽게 실행할 수 있도록 해 주는 기술이다.
PC에 프로그램을 설치할 때 특정 경로에 맞춰 설치해야 하거나 내 컴퓨터에 필요한 옵션을 일일히 맞추느라 힘들었을 것이다. 컨테이너는 이러한 환경까지 모두 포함하여 독립적으로 프로그램을 실행할 수 있도록 도와주는 기술이다. 컨테이너 환경을 묵어서 배포한 컨테이너 이미지라는 프로그램을 내려받아 구동하면 실행되서 간편하다.
컨테이너를 쉽게 내려받거나 공유하고 구동할 수 있도록 도와주는 도구로 컨테이너 런타임을 사용한다. 그 중 가장 유명한 것이 도커이다.
쿠버네티스는 컨테이너 런타임을 통해 여러 서버에 컨테이너를 분산해서 배치하거나, 상태 관리 및 컨테이너의 구동환경을 관리해주는 도구이다. 이것을 컨테이너 오케스트레이션이라고 한다.
1. Traditional Deployment(전통적 배포):
- 물리적인 컴퓨터 한 대에 하나의 OS를 깔고 여러 가지 프로그램을 설치하는 방식
- PC 한 대에 윈도우를 하나 설치하고, 여러 가지 게임이나 워드프로세서 등을 깔아서 사용하는 것과 비슷한 방식
- 가장 오래되고 단순한 방식
2. Virtualized Deployment(가상화 배포):
- 가상머신(Virtual Machine)을 기반으로 배포를 하는 방법
- 하이퍼바이저: 하나의 시스템 상에서 가상 컴퓨터를 여러 개 구동할 수 있도록 해 주는 중간 계층을 의미
- App: 실행하고자 하는 프로그램, Bin/Library는 프로그램이 실행하는데 필요한 환경과 관련된 파일
- 가상머신은 완전한 컴퓨터이고 가상머신에 일일이 운영체제(OS)를 설치해야 하기 때문에 컨테이너 중심의 배포(Container Deployment)보다는 무거운 편
3. Container Deployment(컨테이너 중심의 배포):
- 컨테이너는 가상머신과 달리 프로그램 구동을 위해서 OS를 매번 설치할 필요가 없음
- OS는 하나만 사용
- 핵심 기술: 같은 OS 상에서 구동되는 프로그램이지만 게임 및 인터넷 프로그램은 서로 다른 컴퓨터에서 깔려있다고 생각하게 함. 즉, 두 프로그램 간에 간섭을 일으킬 수 없음. 이래서 OS에 문제가 일어날 경우, OS에서 구동 중인 전체 컨테이너의 문제가 될 가능성이 있음.
참고: https://www.samsungsds.com/kr/insights/220222_kubernetes1.html
'Infra > Container_Docker' 카테고리의 다른 글
도커란? (0) | 2022.08.08 |
---|---|
[Docker] Docker 명령어 정리(-ing) (0) | 2022.05.02 |
[Docker]Docker와 Docker Compose 설치하기 (0) | 2022.05.02 |
[Docker] Docker Compose로 influxdb, grafana 실행하기 (0) | 2022.05.02 |
[Linux] 간단한 Docker image 만들기 (0) | 2021.04.22 |