2024. 1. 31. 14:53ㆍ기술정보
도커(Docker)는 리눅스 환경에서 더 쉽게 가상화 컨테이너를 실행하고 관리할 수 있게 해주는 오픈소스 프로젝트이다.
Docker 즉 컨테이너 관련 기술은 클라우드 네이티브와 깊은 연관이 있는데 이와 관련된 것은 따로 포스팅하겠다.
Docker Container vs Virtual Machine
가상화 기술의 대표는 과거 Virtual Machine이었다. (대표적인 Virtual Machine에는 VMware이 있겠다)
기존에 가장 많이 쓰이던 virtual Machine과 현재 점유율을 독차지하고 있는 Docker를 비교해보겠다
(1) 가상머신 ( Virtual Machine )
Virtual Machine, 즉 가상머신은 하이퍼바이저(Hypervisor)*를 이용해 여러개의 운영체제를 하나의 호스트에서 생성하여 사용하는 방식이다.
( ** 하이퍼바이저
- 하나의 물리적 장치에서 여러 가상 머신을 실행하는 소프트웨어
- 필요에 따라 CPU 및 메모리 등 기본 물리적 컴퓨팅 리소스를 개별 가상 머신에 할당함
- 물리적 IT인프라의 최적 사용을 지원
)
각 운영체제는 가상 머신 단위로 구별되고 각 가상머신에는 OS가 설치되어 사용된다.
하이퍼바이저에 의해 생성·관리되는 운영체제를 게스트 운영체제(Guest OS)라 하며 각 게스트운영체제는 서로 완전히 독립된 공간과 시스템 자원을 할당 받아 사용된다.
=> 정리하자면
가상머신(Virtual Machine)
장점 :
- 완벽한 운영체제를 생성
단점 :
- 높은 성능손실 : 각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업이 하이퍼바이저를 반드시 거치기 때문
- 소모 용량 큼 ↑ : 게스트 운영체제를 사용하기위한 라이브러리, 커널 등을 전부 포함하기 때문
(2) 도커 ( Docker )
가상화된 공간 생성을 위해 리눅스 자체 기능인 chroot, 네임스페이스(namespace), cgroop을 사용하여 프로세스 단위의 격리 환경을 구축한다.
컨테이너*에 필요한 커널을 공유해서 사용하고 , 컨테이너 안에는 어플리케이션을 구동하는 데 필요한 라이브러리·실행 파일만 존재한다.
(
** 컨테이너 ( container)
- 어떤 환경에서도 실행할 수 있도록 필요한 모든 요소를 포함하는 소프트웨어 패키지
- 운영체제를 가상화함
- Host OS 위에서 독립적인 프로그램처럼 관리되고 실행
( -> 불필요한 OS 만들기·Infra를 독립적으로 나누기 X)
=> 정리하자면
도커(Docker)
차이점
- 성능손실 X : 프로세스 단위의 격리 환경 생성
- 소모 용량 적음 ↓ : 커널을 공유해서 사용하므로 컨테이너에는 라이브러리 및 실행파일만 존재
=> 컨테이너를 이미지로 만들었을 때 배포시간 ↓ , 성능 손실 ↓
위에서 본 것처럼

가상머신은 독립적인 플랫폼을 하나 만들때마다 OS를 새롭게 생성시켜주게 된다.
이게 각각 다른 OS를 써야하는 상황일 때는 좋을 수 있지만 대부분의 상황에서는 OS를 굳이 분리해서 쓸일이 많지 않고
또 OS를 개별적으로 생성하게 되었을 때 메모리 공간을 많이 차지하게 되기 때문에 자원관리에서 비효율적이라 할 수 있다.
그래서 최근에는 컨테이너를 생성하는 방식을 쓰고 있고 그 컨테이너를 쉽게 생성 및 관리 하는 오픈소스 프로젝트인 도커를 쓰는 것이다
'기술정보' 카테고리의 다른 글
[CP] 커넥션 풀 (Connection Pool) (0) | 2024.02.25 |
---|---|
[클라우드 네이티브] 개념 정리 (1) | 2024.02.13 |
[ AI ] 언어모델 (0) | 2023.12.26 |
[ AI ] 머신러닝 vs 딥러닝 (0) | 2023.12.26 |
[ JWT ] JWT를 활용한 로그인 (0) | 2023.11.27 |