Notice
Recent Posts
Recent Comments
Link
희원이 블로그
2. 하이퍼바이저와 컨테이너: 도커 개요 본문
1. 하이퍼바이저 vs 컨테이너
하이퍼바이저 기반 가상화 | 컨테이너 기반 가상화 | |
가상화 유형 | 하드웨어 가상화 | 운영체제 수준 가상화 |
시작 시간 | 느림 (몇 분) | 빠름 (몇 초) |
스케일링 | 느림 | 빠름 |
격리 | 강력한 격리 | 제한된 격리 (OS 커널 공유) |
이미지 크기 | 수 GB ~ 수백 GB (OS를 포함하여 애플리케이션과 필요한 런타임 소프트웨어 필요) | ~ 수백 MB (애플리케이션 및 종속성만 필요) |
게스트 OS | Windows/Linux 등 선택 가능 | 호스트 OS와 동일한 OS |
게스트 OS와 관계 | 게스트 OS는 하드웨어로 인식 | 호스트 OS를 커널 수준으로 분리하여 OS를 가상화 형태로 사용하여 필요에 따라 호스트와 리소스 공유 가능 |
이식성 | 이미지에 대한 변환이 필요함 | 컨테이너 이미지 그대로 사용 가능 |
데이터 관리 | VM 내부 또는 연결된 스토리지에 저장 | 컨테이너 내부에 있는 데이터는 종료 시 소멸되며, 필요에 따라 스토리지를 이용하여 저장 |
사용 용도 | 가상화된 서버 | 마이크로서비스, 컨테이너 오케스트레이션 |
2. 도커의 장점
- 도커는 pivot_root, namespace, cgroup 등 리눅스 커널의 기능을 이용하여 프로세스를 격리하는 환경을 구축하며, 이로 인해 성능 손실이 거의 없습니다.
- 호스트의 커널을 공유하면서 컨테이너 내부에는 애플리케이션을 실행하는데 필요한 라이브러리와 실행 파일만 존재하므로 이미지 용량이 줄어듭니다.
- 컨테이너를 이미지로 만들어 배포하는 시간이 가상머신에 비해 빠릅니다.
3. 애플리케이션의 개발과 배포 관점에서의 도커
- 도커 컨테이너는 격리되어 있어 컨테이너 내부에서 소프트웨어를 설치하고 설정 파일을 수정하더라도 호스트 OS에는 영향을 끼치지 않습니다.
- 개발 환경에서 작업을 마치면 동일한 이미지를 운영 환경에 배포하여 별도의 설치 과정 없이 동일하게 쉽게 복제할 수 있습니다.
- 도커 이미지는 커널을 포함하지 않아 때문에 이미지 크기가 작아져 효율적인 저장 및 전송이 가능합니다.
4. 애플리케이션의 독립성과 확장성 관점에서의 도커
- 여러 도커 컨테이너를 함께 사용하면 MSA 아키텍처를 구현할 수 있습니다.
- MSA (마이크로서비스 아키텍처)는 여러 모듈을 독립된 형태로 구성하는 것이며, 다음과 같은 장점이 있습니다.
- 언어에 종속되지 않아 변화에 빠르게 대응할 수 있습니다.
- 각 모듈의 관리가 쉬워집니다.
- 각 모듈은 독립적으로 관리되어 모놀리식 아키텍처 문제를 해결하면서 확장성이 좋습니다.
5. Docker를 이용한 MSA 예시
- 웹 서비스에 부하가 발생할 경우: 웹 서버 컨테이너를 동적으로 늘려서 분산할 수 있습니다.
- 이미지 버전을 독립적으로 관리: 유지보수가 용이합니다.
- 직접 MSA를 구현하지는 않음: 보통 도커 스웜, 쿠버네티스 등 컨테이너 오케스트레이션 플랫폼을 사용하여 구현합니다.
6. Docker 이미지
- 도커 이미지는 컨테이너를 생성할 때 필요한 요소로 여러 계층으로 된 바이너리 파일입니다.
- 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용합니다.
- 도커 명령어를 통해 내려받을 수 있어 별도로 설치할 필요가 없습니다.
출처
윤성국님의 컨테이너 강의
'Container' 카테고리의 다른 글
3. 도커: Layer (레이어) 개념과 자주 사용 하는 명령어 (2) | 2023.12.12 |
---|---|
1. 컨테이너의 기술적 배경: chroot에서 cgroups까지 (0) | 2023.12.10 |
Comments