PMDEXIT 프로젝트 용어사전

컨테이너

Container

애플리케이션을 환경째 격리·패키징해 일관 배포하는 기술.

컨테이너란 무엇인가

컨테이너(Container)는 애플리케이션과 그 실행에 필요한 라이브러리·설정·런타임을 하나로 묶어 환경째 격리하고 패키징하는 기술이다. 동일한 이미지를 어디에 올리든 같은 방식으로 동작하므로 개발자의 노트북과 운영 서버 사이의 환경 차이로 생기는 사고를 크게 줄인다.

호스트 운영체제의 커널을 공유하면서 프로세스·파일시스템·네트워크를 분리하기 때문에 가볍고 빠르게 뜨고 내릴 수 있다. 패키징과 격리를 동시에 제공한다는 점이 컨테이너의 본질이다.

쓰기 가능 층 (실행 시 추가)L4앱·의존성 계층L3베이스 이미지 계층L2호스트 커널 (공유)L1
이미지 계층 위 컨테이너 구조

가상머신과의 차이

가상머신은 하드웨어를 가상화해 각자 별도의 운영체제를 통째로 올리지만, 컨테이너는 호스트 커널을 공유하고 그 위에서 격리된 공간만 확보한다. 그 결과 컨테이너는 운영체제 부팅 과정이 없어 기동이 빠르고 자원 소모가 적으며, 한 호스트에 더 많은 인스턴스를 밀집해 올릴 수 있다.

다만 커널을 공유하므로 격리 수준은 가상머신보다 약하고, 호스트 커널과의 호환성에 제약을 받는다. 두 기술은 대체 관계가 아니라 격리 강도와 자원 효율 사이에서 선택하는 보완 관계로 이해해야 한다.

이미지와 레지스트리

컨테이너의 실행 단위는 이미지에서 출발한다. 이미지는 애플리케이션과 의존성을 계층 구조로 쌓아 만든 읽기 전용 산출물이며, 실행 시점에 그 위에 쓰기 가능한 층이 더해져 컨테이너가 된다.

계층을 공유하는 구조 덕분에 같은 베이스를 쓰는 이미지들은 저장과 전송이 효율적이다. 이렇게 만든 이미지를 레지스트리에 올려 버전으로 관리하면, 동일한 산출물을 여러 환경에 일관되게 배포하고 필요할 때 이전 버전으로 되돌릴 수 있다.

구분컨테이너가상머신
격리 방식커널 공유OS 통째
기동 속도빠름느림
격리 강도약함강함
컨테이너와 VM 비교

CI/CD와의 결합

컨테이너는 CI/CD 파이프라인의 산출물 형식으로 자리 잡으며 효과가 극대화된다. 빌드 단계에서 한 번 만든 이미지를 검증·스테이징·운영으로 그대로 승격하면, 환경마다 다시 빌드하면서 생기는 미묘한 차이를 원천적으로 차단할 수 있다.

같은 이미지가 모든 단계를 통과하므로 검증의 결과를 운영에 그대로 신뢰할 수 있다는 점이 중요하다. 이는 DevOps가 지향하는 재현 가능한 배포를 실현하는 구체적인 수단이 된다.

오케스트레이션의 필요

컨테이너 하나를 띄우는 것은 단순하지만, 수십에서 수백 개를 운영 환경에서 다루기 시작하면 배치·확장·장애 복구·네트워크 연결을 사람이 손으로 감당하기 어렵다. 이를 자동으로 관리하는 오케스트레이션 계층이 필요해지며, 원하는 상태를 선언하면 시스템이 실제 상태를 그에 맞추는 방식이 표준으로 자리 잡았다.

노드 장애 시 컨테이너를 다른 자리에 다시 띄우고, 부하에 따라 수를 늘리고 줄이는 일이 자동으로 이루어진다. 컨테이너의 가치는 단일 실행이 아니라 이 운영 자동화와 묶일 때 온전히 드러난다.

MSA를 떠받치는 기반

컨테이너는 마이크로서비스 아키텍처(MSA)를 현실적으로 가능하게 한 기반 기술이다. 서비스를 작은 단위로 쪼개려면 각 서비스를 독립적으로 패키징·배포·확장할 수 있어야 하는데, 가볍고 격리된 컨테이너가 그 단위 역할을 한다.

서비스마다 서로 다른 런타임과 의존성을 충돌 없이 한 호스트에 공존시킬 수 있다는 점도 결정적이다. 다만 컨테이너로 쪼갠다고 해서 자동으로 좋은 구조가 되는 것은 아니며, 경계 설계가 부실하면 분산이 오히려 복잡성과 운영 부담만 키운다는 점을 경계해야 한다.

관련 용어