소화기가 미니언? (가상화)
가상화

- 가상화(Virtualization)는 하나의 물리적인 시스템(서버, 컴퓨터) 위에 여러 개의 가상 시스템(논리적 컴퓨터)을 만들어 각각 독립적으로 운영할 수 있게 하는 기술이다.
즉, 실제 존재하는 하드웨어 자원을 추상화해서 여러 개의 논리적인 자원처럼 보이게 하는 것이다.
가상화의 목적
- 자원 활용도 향상: 서버를 여러 용도로 동시에 사용
- 비용 절감: 물리 서버 수 감소
- 유지보수 편리: OS나 환경 테스트, 백업/복원 용이
- 격리성: 시스템 간 충돌 최소화, 보안 향상
가상화의 종류
1. 시스템 가상화 (서버 가상화)
정의
- 하나의 물리 서버에서 여러 개의 가상 머신(VM)을 운영체제와 함께 실행
구성요소
- 하이퍼바이저(Hypervisor): 가상 머신을 생성하고 관리하는 소프트웨어
- Type 1: Bare-metal (ex. VMware ESXi, Microsoft Hyper-V)
- Type 2: Host-based (ex. VirtualBox, VMware Workstation)
운영체제 수준 가상화 (컨테이너)
정의
- 하나의 운영체제 내에서 여러 애플리케이션 환경을 격리해서 실행
기술
- Docker, LXC(Linux Containers), Kubernetes 등
특징
- VM보다 가볍고 빠름
- 호스트 OS를 공유하되 격리된 환경 제공
저장소 가상화 (Storage Virtualization)
정의
- 여러 개의 물리적 디스크/스토리지를 하나의 논리적 저장 공간으로 통합
목적
- 스토리지 효율 증가, 확장성 용이, 데이터 이동성 향상
네트워크 가상화 (Network Virtualization)
정의
- 네트워크 자원(라우터, 스위치, 방화벽 등)을 가상화해 논리적인 네트워크 구성
기술
- SDN(Software Defined Networking), NFV(Network Function Virtualization)
Docker
Docker는 컨테이너 기반의 가상화 기술이다.
운영체제 수준에서 프로세스를 격리하여 가볍고 빠른 가상화 환경을 제공하는 도구다.
Docker는 일종의 "컨테이너 관리자"로, 컨테이너 생성, 실행, 관리, 배포를 쉽게 해준다.
Docker는 어떤 방식의 가상화를 사용하는가?
Docker는 운영체제 수준 가상화 (OS-level Virtualization) 를 사용한다.
즉, 전통적인 VM처럼 하드웨어 전체를 가상화하지 않고, 하나의 커널(OS)을 공유하면서 각 컨테이너를 프로세스 단위로 격리하는 방식이다.
이 방식 덕분에:
- 가볍고,
- 빠르게 실행되며,
- 자원 소모가 적다.
Docker의 가상화 기술 핵심 요소
- Namespace (네임스페이스)
네임스페이스는 리눅스 커널 기능 중 하나로, 특정 프로세스에 자원 접근 범위를 제한하는 기능이다.
Docker는 다음과 같은 네임스페이스를 사용한다:
| 네임스페이스 | 설명 |
|---|
| PID | 프로세스 ID 격리 (각 컨테이너마다 1번 PID부터 시작) |
| NET | 네트워크 인터페이스 격리 (각자 다른 IP) |
| MNT | 파일 시스템 격리 (각자 다른 루트 디렉토리 /) |
| UTS | 호스트 이름 및 도메인 네임 격리 |
| IPC | 프로세스 간 통신 자원 격리 |
| USER | 사용자 및 권한 격리 |
이렇게 하면, 하나의 OS 위에서 각 컨테이너가 서로 다른 독립된 시스템처럼 동작할 수 있다.
2. cgroups (Control Groups)
컨테이너가 사용하는 CPU, 메모리, 디스크 I/O 등 자원을 제한하고 관리하는 기술이다.
cgroups을 통해 컨테이너가 시스템 전체 자원을 독점하지 않게 할 수 있다.
3. Union File System (UFS)
도커 이미지의 레이어 구조를 가능하게 해주는 파일 시스템이다.
- 이미지는 여러 레이어로 구성됨 (기본 이미지 + 수정 사항)
- 컨테이너는 이미지 위에 새로운 레이어를 올려 사용하는 구조
- 변경된 내용만 기록되어 디스크 공간 절약, 이미지 공유 가능
Docker와 VM의 비교
| 항목 | Docker (컨테이너) | Virtual Machine |
|---|
| 가상화 수준 | 운영체제 수준 (프로세스 단위) | 하드웨어 수준 |
| 부팅 속도 | 수 초 | 수 분 |
| 크기 | 수십 MB | 수 GB |
| 실행 성능 | 네이티브와 거의 동일 | 일부 오버헤드 있음 |
| 격리 강도 | 낮음 (커널 공유) | 강함 (독립된 커널 사용) |
| OS | 호스트 OS 공유 | 각각 다른 OS 가능 |
Docker의 구조

Docker 이미지와 컨테이너
- Docker 이미지(Image): 실행 가능한 컨테이너를 만들기 위한 모든 설정이 담긴 템플릿
- Docker 컨테이너(Container): 이미지를 기반으로 실행된 인스턴스
이미지 = 클래스
컨테이너 = 객체
정리
- Docker는 운영체제 수준 가상화를 사용한다.
- Namespace와 cgroups를 통해 격리 및 자원 제어를 수행한다.
- VM보다 가볍고 빠르며, 클라우드, CI/CD, DevOps에서 폭넓게 사용된다.
- 컨테이너는 같은 커널을 공유하지만 사용자 입장에서는 마치 별도의 머신처럼 동작한다.
하이퍼바이저와 가상 머신

하이퍼바이저란?
- VM을 생성하고 자원을 분배하는 가상화 관리자 역할을 한다.
VM(Virtual Machine)
- 가상화된 컴퓨터. 물리 자원(CPU, RAM, 디스크)을 일부 할당받아 독립된 환경에서 운영된다.
컨테이너 vs 가상 머신
| 구분 | 가상 머신 (VM) | 컨테이너 |
|---|
| 가상화 수준 | 하드웨어 수준 | 운영체제 수준 |
| 성능 | 무겁고 느림 | 가볍고 빠름 |
| 부팅 시간 | 수 분 | 수 초 |
| 자원 사용 | 많음 | 적음 |
| 격리성 | 강함 | 상대적으로 약함 |
| 대표 기술 | VMware, VirtualBox 등 | Docker, Kubernetes 등 |
- VM은 아파트: 각 세대가 독립된 전기, 수도, 출입문을 가짐
- 컨테이너는 원룸 쉐어하우스: 공용 OS(건물), 각자 방만 따로 있음
가상화가 중요한 이유
- 클라우드 컴퓨팅에서 핵심 기술
- AWS, Azure, GCP 모두 가상화 기반으로 인프라 제공
- 테스트와 배포 자동화에 유용
- 여러 환경 테스트 시 운영체제별 세팅이 쉬움
- 보안 분리 및 백업/복원 관리 용이
정리
- 가상화는 물리 자원을 논리적으로 분리/관리하기 위한 기술이다.
- 하이퍼바이저를 통해 VM을 생성하거나, 컨테이너를 통해 애플리케이션을 격리할 수 있다.
- 가상화는 서버 효율화, 개발 테스트, 클라우드 환경 구축에 핵심이 된다.