주제: container-capacity Docker 가상화 홈서버

Docker 컨테이너와 VM의 자원 사용 차이

같은 사양의 홈서버에서 컨테이너와 VM이 각각 몇 개나 올라가는지 계산했습니다. 무엇이 먼저 바닥나는지도 함께 봅니다.

홈서버에 서비스를 여러 개 올리려는데 컨테이너로 할지 VM으로 할지 고민됩니다. “컨테이너가 가볍다” 는 말이 실제로 얼마나 차이 나는지 계산해 봤습니다.

먼저 결론

같은 서버(4코어 / 16GB / 500GB)에 올릴 수 있는 개수입니다.

방식 단위당 자원 올릴 수 있는 개수 먼저 바닥나는 자원
컨테이너 0.5코어 / 0.5GB 18개 cpu
VM 2코어 / 4GB 1개 cpu

차이가 큽니다. 다만 이 차이는 기술 자체보다 “단위당 얼마를 잡느냐” 에서 옵니다.

왜 컨테이너가 가벼운가

VM은 운영체제를 통째로 하나 더 띄웁니다. 커널·시스템 서비스·메모리가 게스트마다 따로 듭니다.

컨테이너는 호스트의 커널을 함께 씁니다. 실행에 필요한 것만 담기므로 시작이 빠르고 메모리를 적게 씁니다.

무엇이 먼저 바닥나나

홈서버에서 먼저 바닥나는 것은 대개 메모리입니다. 코어는 나눠 쓸 수 있지만 메모리는 그러기 어렵습니다. 위 계산에서도 한계를 정한 자원이 표에 나와 있습니다.

컨테이너 기준으로 남는 자원은 코어 0개, 메모리 5GB입니다.

그럼 VM은 왜 쓰나

  • 격리가 강하다 — 커널을 공유하지 않으니 한쪽 문제가 번지기 어렵습니다
  • 다른 운영체제가 필요할 때 — 윈도우를 돌려야 한다면 VM입니다
  • 커널 수준 설정이 필요할 때
  • 통째로 스냅샷·이전이 쉽다

결과를 어떻게 읽나

  • 서비스를 여러 개 올린다 — 컨테이너. 개수에서 비교가 안 됩니다
  • 격리가 중요하다 — VM. 또는 둘을 섞습니다
  • 메모리가 부족하다 — 컨테이너로 바꾸는 것이 가장 효과가 큽니다

흔히 틀리는 부분

  • 코어만 보고 개수를 정한다 — 메모리가 먼저 바닥납니다
  • 호스트 몫을 안 뺀다 — 운영체제 자신이 쓸 자원을 남겨야 합니다
  • CPU 초과 할당을 무한정으로 본다 — 동시에 몰리면 전부 느려집니다
  • 디스크를 잊는다 — 이미지와 데이터가 쌓이면 여기서 먼저 막힐 수 있습니다

상황별 권장

  • 미디어 서버·다운로더·홈오토메이션 — 컨테이너로 충분합니다
  • 다른 사람과 함께 쓴다 — 격리가 필요하면 VM
  • 메모리가 넉넉하지 않다 — 컨테이너 위주로 구성하세요

직접 계산해 보기

서버 사양과 단위당 자원을 넣으면 올릴 수 있는 개수와 병목이 나옵니다.

자주 묻는 질문

컨테이너 안에서 컨테이너를 돌려도 되나요?
가능하지만 권하지 않습니다. 복잡도에 비해 얻는 것이 적습니다.

메모리를 초과 할당해도 되나요?
가능한 환경도 있지만 위험합니다. 부족해지면 프로세스가 강제 종료됩니다.

계산 기준

  • 호스트가 쓸 자원을 미리 빼고 계산했습니다
  • CPU는 입력한 초과 할당 비율을 반영했습니다
  • 실제 사용량은 서비스에 따라 크게 다릅니다. 여유를 두고 보세요

내용이 잘못되었나요? 수정 요청