소프트웨어를 실행하는데 필요한 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정을 포함하는 표준화된 단위이다.
컨테이너는 운영체제 수준의 가상화를 통해 각각의 컨테이너를 격리한다.
이를 통해 각 컨테이너는 마치 별도의 물리적 머신처럼 독립적으로 작동하며, 다른 컨테이너와 OS 자원(예: CPU, 메모리)을 공유하지 않는다.
컨테이너는 가상 머신(VM)에 비해 훨씬 더 경량적이다.
VM은 각각의 전체 운영체제를 로드해야 하지만, 컨테이너는 호스트 운영체제의 커널을 공유하고, 애플리케이션 실행에 필요한 최소한의 구성만을 포함한다.
이를 통해 더 빠르고 더 적은 메모리 용량을 차지하게 된다.
컨테이너는 애플리케이션과 모든 의존성을 하나의 패키지로 묶어준다.
이 묶음은 다양한 환경(개발, 테스트, 프로덕션) 및 클라우드와 온프레미스 시스템에서도 변경 없이 실행할 수 있다.
개발자는 로컬에서 애플리케이션을 컨테이너로 개발하고, 동일한 컨테이너를 테스트 및 프로덕션 환경에서 실행할 수 있다.
이로 인해 "내 컴퓨터에서는 되는데요?"라는 문제를 크게 줄일 수 있다.