웹 개발에서 컨테이너란, 주로 서버 사이드 기술을 사용하는 애플리케이션을 실행하는 환경 또는 플랫폼을 말한다.
컨테이너는 애플리케이션을 실행하고 관리하는 역할을 하며, 다양한 서버 사이드 기술 및 프레임워크의 코드가 이 컨테이너 내에서 실행된다.
컨테이너는 데스크탑, 클라우드 등 어디에서나 실행할 수 있도록 애플리케이션 코드를 해당 라이브러리 및 종속 항목과 함께 패키징한 소프트웨어 실행 유닛이다.
이를 위해 컨테이너는 일종의 운영체제(OS) 가상화를 활용한다. 이러한 가상화를 수행할 경우 프로세스를 격리하고 이러한 프로세스가 액세스할 수 있는 CPU, 메모리, 디스크의 양을 제어하기 위해 OS 커널의 특성을 활용할 수 있다.
컨테이너는 작고 빠르며 이동이 가능하다. 가상머신과 달리 컨테이너의 모든 인스턴스에 게스트OS를 포함할 필요가 없기 때문이다.
컨테이너를 더 잘 이해하는 한 가지 방법은 기존의 가상머신(VM)과의 차이점을 살펴보는 것이다. 온프레미스 또는 클라우드의 기존 가상화 환경에서는 하이퍼바이저를 활용한 물리적 하드웨어를 가상화 한다. 그러나 컨테이너는 기본 하드웨어를 가상화하지 않고 운영체제를 가상화한다. 따라서 각각으 ㅣ개별 컨테이너에는 오직 애플리케이션과 그 라이브러리 및 종속 항목만 포함되어 있다.
컨테이너는 소프트웨어 서비스를 실행하는 데 필요한 특정 버전의 프로그래밍 언어 런타임 및 라이브러리와 같은 종속 항목과 애플리케이션 코드를 함께 포함하는 경량 패키지이다.