도커란 무엇인가?
- 애플리케이션을 컨테이너로 좀 더 쉽게 사용 할 수 있게 함
- Go 언어로 작성되었으며 2013년 3월에 릴리즈 된 이후 지금까지 꾸준히 개발됨
가상 머신과 도커 컨테이너
기존 가상화
- 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용함
- 하이퍼바이저에 의해 생성되고 관리되는 운영체제를 게스트 OS 라 함
- 일반 호스트에 비해 성능 손실이 있음
Docker 가상화
- 가상 공간을 생성하기 위해 리눅스 자체 기능인 cgroup, croot, namespace 를 사용
- 프로세스 단위의 격리 환경을 만들기 때문에 성능손실이 거의 없음
- 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행 파일만 존재하기 때문에 컨테이너를 이미지로 만들었을 때 이미지의 용량 또한 가상머신에 비해 대폭 줄어듦
도커를 사용해야 하는 이유
- 애플리케이션의 개발과 배포가 편해짐
- 여러 애플리케이션의 독립성과 확장성이 높아짐
모놀리스 아키텍처 (Monolith)
- 여러 모듈이 상호작용하는 로직을 하나의 프로그램 내에서 구동
- 소규모 서비스에서 사용하기 좋음
- 확장성과 유연성이 떨어짐
마이크로 서비스 아키텍처 (Micro-service)
- 여러 모듈을 독립된 형태로 구성하기 때문에 언어에 종속되지 않고 변화에 빠르게 대응할 수 있음
- 컨테이너는 여러 모듈에게 독립된 환경을 빠른 시간 내에 제공 할 수 있기 때문에 마이크로 서비스에서 가장 많이 사용되고 있는 가상화 기술임
도커 엔진
- 맥은 xhyve 기술을 윈도우는 Hyper-V 기술을 활용해 가상화 엔진을 구축함
- 도커 엔진은 크게 두가지 종류 (CE, EE) 로 나뉨
EE (Docker Enterprise Edition)
- 유료로 제공되는 기업용 솔루션
- 각종 부가 기능들을 도커 엔진과 함께 제공함
- 3개월 마다 안정화된 버전으로 릴리즈 됨
CE (Docker Community Edition)
- 무료로 제공되는 도커 엔진
- 별도의 기술 지원 및 서비스 제공 X
- 도커 엔진 자체의 핵심 기능 무료사용 가능
'도커' 카테고리의 다른 글
[도커] - Dockerfile (0) | 2024.01.17 |
---|---|
[도커] - 도커 볼륨 (0) | 2024.01.16 |