Iriton's log
05. 가상머신과 컨테이너의 이해 본문
가상머신
단일 물리적 시스템이 여러 개의 독립적 가상 머신에서 각각의 운영체제를 동시에 실행할 수 있도록 함
장점
- VM으로부터 호스트 시스템을 보호, VM 서로 간의 보호
- 전파 되기 쉬운 바이러스 분석, 안전하지 않은 웹서비스 활용
- VM 정지, 일시중단, 실행
- 다른 곳으로 이동하거나 복사하여 다시 시작
- 해당 상태로 다시 복원할 수 있는 특정 상태의 스냅샷
- VM을 다양한 분야에 활용
- 템플릿 생성
- OS와 애플리케이션을 함께 VM으로 생성하여 템플릿 형태로 제공
- 실시간 마이그레이션
- 실행 중인 VM을 한 호스트에서 다른 호스트로 이동
- 클라우드 컴퓨팅
- VM을 임대해 주고 사용량 및 시간을 기반으로 과금하는 체계로 활용
컨테이너
운영체제 수준에서 운영 환경을 구분하는 가상화 기술
- 컨테이너 내의 응용프로그램은 자신이 독립된 운영체제에서 구동되고 있다고 인식
- Linux 환경의 Cgroups라는 개념
- 프로세스에게 컴퓨터 내에 CPU, 메모리 등의 자원 사용에 대한 사용량 제한을 둘 수 있음.
- 프로세스 ID의 네임스페이스 기반 격리 가능
- 네트워크 네임스페이스를 통해 인터페이스 제어, iptables 방화벽 및 라우팅 테이블에 대한 격리
- 파일 시스템의 마운트 네임 스페이스 정의를 통해 접근 디렉토리의 격리
- 사용자 네임 스페이스 정의를 통해 사용자 ID를 격리
리눅스 컨테이너
- Cgroup과 네임스페이스 개념을 기반으로 프로세스와 네트워킹을 독립적으로 운영하는 컨테이너 개념 제시
- 현재도 리눅스 환경에서의 컨테이너 기술도 활용 중
Docker
- 리눅스 컨테이너 기술을 기반으로 구현
- 리눅스 컨테이너 위에 도커를 구동시켜서 사용할 수 있음.
- 컨테이너 기술의 표준처럼 인식이 되어 있으며 윈도우 버전도 출시되었음
장점
- 컨테이너 기술을 지원하는 어느 곳에서나 실행 가능
- 컨테이너 기반으로 표준화된 작업 단위 구성 가능
- 각 컨테이너가 하나의 자원 할당 및 제한의 대상
- 마이크로 서비스 아키텍처 구현의 기반이 되는 기술
Docker를 기준으로 한 컨테이너 기술 활용법
- 컨테이너를 구동하기 위해서는 이미지가 필요함
- 컨테이너가 갖고 있는 기반이 되는 정보들, 운영체제를 포함한 그 다음에 애플리케이션을 포함한 혹은 이루 데이터를 포함한 기반이 되는 정보를 하나의 템플릿으로 구성해 놓은 것
- 이미지 생성을 위해서 Dockerfile이 필요하며, 작성된 Dockerfile을 build 명령으로 이미지화 할 수 있고, 특히 기존의 이미지를 활용하여 새로운 이미지 생성 가능
- 이미지는 Registry에서 pull 명령으로 가져올 수 있고 push 명령으로 Registry에 업로드 가능
- 이미지는 run 명령을 통해 컨테이너 형태로 구동됨
- 이미지를 생성하여 구동하게 되면 docker 컨테이너가 되며, 구동 시 발생하는 입출력 정보를 R/W layer에 저장하게 됨
가상머신과 컨테이너의 특성 비교
- 가상화 대상의 차이
- 가상머신은 하드웨어를 가상화
- 컨테이너는 운영체제를 가상화
- 성능의 차이
- 가상머신과 컨테이너 성능 비교 시 산술 연산을 할 때 2배 정도 컨테이너 기술이 빠름
- 메모리 접근 관련 성능에서는 컨테이너 기술이 3배 정도 빠름
- 이미지 용량의 차이
- 가상머신: 수 기가 바이트
- 컨테이너: 수십 메가 바이트
- 자원의 할당과 사용 관련 차이
- 가상 머신은 독립적인 네트워크 자원, HDD 자원 생성 가능
- 컨테이너는 네트워크 HDD 자원 생성 불가능
'Cloud > Study' 카테고리의 다른 글
06. 가상머신의 생성 및 운영 + VMware에 Proxmox 실습하기 (0) | 2024.05.14 |
---|---|
04. Proxmox VE 기초 (0) | 2024.05.06 |
03. Proxmox VE의 설치 (0) | 2024.05.06 |
02. 가상화 환경의 이해 (0) | 2024.05.06 |
01. 클라우드 컴퓨팅 개요 (0) | 2024.05.06 |
Comments