본문 바로가기
일반IT

LXC와 도커, 둘 다 컨테이너인데 뭐가 다른 걸까? 🤔 완벽 비교 분석!

by gasbugs 2025. 8. 13.

안녕하세요! 개발과 인프라에 관심 있는 분들이라면 '컨테이너'라는 말을 정말 많이 들어보셨을 거예요. 그리고 컨테이너 기술의 양대 산맥으로 도커(Docker)LXC(Linux Containers)를 꼽을 수 있죠. 🚀

"어? 둘 다 리눅스 커널을 공유해서 격리된 환경을 만드는 기술 아닌가? 그냥 똑같은 거 아니야?" 라고 생각하셨다면, 오늘 이 글을 통해 그 궁금증을 시원하게 해결해 드릴게요! 비유를 통해 알기 쉽게, 그리고 핵심만 콕콕 짚어서 두 기술의 결정적인 차이점을 낱낱이 파헤쳐 보겠습니다.

 

https://dockerlabs.collabnix.com/beginners/docker/docker-vs-container.html


🏠 LXC: 잘 꾸며진 '가벼운 가상 집'

LXC는 '시스템 컨테이너(System Container)'의 대표 주자입니다. 이름에서 알 수 있듯이, LXC의 목표는 가상 머신(VM)처럼 완전한 운영체제(OS) 환경을 제공하는 것이에요. 하지만 VM처럼 하드웨어 전체를 가상화하는 것이 아니라, 호스트 OS의 커널을 공유하기 때문에 훨씬 가볍고 빠르죠.

LXC를 한마디로 비유하자면 '가벼운 가상 집' 🏠이라고 할 수 있습니다.

  • 하나의 완전한 시스템: LXC 컨테이너 안에는 일반적인 리눅스 배포판처럼 init 프로세스가 존재하고, 다양한 데몬과 서비스(sshd, crond 등)가 동시에 실행될 수 있습니다. 사용자를 여러 명 만들고, 패키지를 설치하고, 마치 작은 리눅스 서버 한 대를 관리하는 것과 거의 똑같은 경험을 제공해요.
  • 다중 프로세스 환경: 하나의 컨테이너 안에서 여러 개의 프로세스를 실행하고 관리하는 것이 기본입니다.
  • 관리 방식: 주로 SSH를 통해 접속하여 일반 서버를 다루듯이 명령어를 입력하며 관리합니다.

🐧 핵심: LXC는 가상 머신을 대체할 목적으로, 하나의 격리된 공간 안에서 완전한 OS 환경을 실행하는 데 초점을 맞춥니다.


📦 도커: 앱을 위한 '규격화된 포장 상자'

반면, 우리에게 너무나 익숙한 도커(Docker)는 '애플리케이션 컨테이너(Application Container)'라고 불립니다. 도커의 탄생 목적은 LXC와 조금 다릅니다. OS 전체를 실행하는 것보다는, 특정 애플리케이션 하나를 실행하는 데 모든 것을 집중하죠.

도커를 비유하자면 '애플리케이션을 위한 규격화된 포장 상자' 📦에 가깝습니다.

  • 단일 프로세스 지향: 도커 컨테이너는 보통 단 하나의 애플리케이션(프로세스)을 실행하기 위해 설계됩니다. Dockerfile의 CMD나 ENTRYPOINT 명령어로 지정된 프로세스가 종료되면 컨테이너도 함께 종료되는 것이 일반적입니다.
  • Immutable Infrastructure (불변 인프라): 도커 이미지는 레이어(Layer) 구조로 되어 있어 한 번 만들어지면 변하지 않습니다. 수정이 필요하면 새로운 이미지를 만들어서 교체하는 방식을 사용하죠. 이는 배포의 일관성과 안정성을 크게 높여줍니다.
  • 강력한 생태계: Dockerfile을 통한 쉬운 이미지 빌드, Docker Hub를 통한 이미지 공유, Docker Compose를 이용한 다중 컨테이너 관리 등 애플리케이션 배포를 위한 강력하고 편리한 생태계가 최대 강점입니다.

🐳 핵심: 도커는 애플리케이션을 패키징하여, 어떤 환경에서든 격리된 상태로 단일 애플리케이션을 실행하는 데 최적화되어 있습니다.


🎯 한눈에 보는 LXC vs 도커 핵심 차이점

항목 LXC (시스템 컨테이너) 도커 (애플리케이션 컨테이너)
주요 목표 🖥️ 완전한 OS 환경 제공 (VM 대체) 📦 단일 애플리케이션 실행 및 배포
컨테이너 구조 다중 프로세스 (init 시스템 존재) 단일 프로세스 지향 (앱 종료 시 컨테이너 종료)
관리 방식 เหมือนการจัดการเซิร์ฟเวอร์ขนาดเล็ก (SSH 접속 등) 🐳 Docker CLI, API, Dockerfile을 통한 관리
상태(State) Stateful (상태 유지)에 적합 Stateless (상태 비유지) 지향
이미지/템플릿 OS 템플릿 기반 (서버 설치와 유사) 📜 Dockerfile 기반의 레이어드 이미지
생태계 및 휴대성 상대적으로 작고 환경 의존적 🌐 거대한 생태계 (Hub, Compose) 및 높은 휴대성
 

🤔 그래서, 언제 무엇을 써야 할까요?

두 기술은 우열을 가리기보다는, 목적에 맞게 선택하는 것이 중요합니다.

이럴 땐 LXC를 고려해 보세요! ✅

  • VM보다는 가볍지만, 완전한 리눅스 환경이 필요할 때
  • 서로 다른 여러 서비스를 하나의 논리적인 유닛으로 묶어 하나의 컨테이너에서 관리하고 싶을 때
  • 레거시 애플리케이션처럼 여러 프로세스가 함께 동작해야 하는 환경을 그대로 컨테이너로 옮기고 싶을 때

이럴 땐 도커가 정답입니다! ✅

  • 마이크로서비스 아키텍처(MSA)를 구축할 때
  • 애플리케이션의 개발, 테스트, 배포 주기를 단축하는 CI/CD 파이프라인을 만들고 싶을 때
  • 어떤 서버, 어떤 클라우드에서든 동일한 실행 환경을 보장하고 싶을 때 (강력한 이식성)
  • 수많은 공개 이미지를 활용하여 빠르게 개발 환경을 구축하고 싶을 때

 

✨ 결론

이제 LXC와 도커의 차이점이 명확하게 보이시나요?

간단히 요약하자면, LXC는 '작고 가벼운 서버'를 만드는 기술이고, 도커는 '내 애플리케이션을 위한 맞춤형 포장재'를 만드는 기술입니다.

컨테이너라는 뿌리는 같지만, 추구하는 철학과 목적이 다르기에 서로 다른 방향으로 발전해왔습니다. 이제 두 기술의 차이점을 명확히 이해하고, 여러분의 프로젝트와 상황에 딱 맞는 기술을 선택하여 멋진 인프라를 구축해 보세요! 🎉