컨테이너는 애플리케이션을 위한 이식 가능한 폼 팩터를 생성하고 지원하도록 설계된 가상화 기술로, 다양한 플랫폼에 애플리케이션을 쉽게 배포할 수 있도록 해줍니다. 컨테이너는 애플리케이션 코드 자체, 애플리케이션을 실행하는 데 필요한 라이브러리 등의 종속성, 애플리케이션의 런타임 환경 및 종속성 등 애플리케이션의 모든 요구 사항을 플랫폼 간에 독립적으로 전송 및 실행할 수 있는 폼 팩터로 패키지화합니다. 일반적인 OS 런타임 환경에서 컨테이너는 애플리케이션을 추상화한 것입니다.
Docker가 가장 잘 알려진 컨테이너 구현 형식이지만, 컨테이너 엔진과 유사하게 애플리케이션 격리에 사용되지만 컨테이너와 동일한 방식으로 격리된 이동성을 제공하지는 않는 rkt/CoreOS, containerd, Hyper‑V 컨테이너, cgroups 및 네임스페이스 같은 하위 수준 기술 등과 같은 다른 컨테이너 기술이 있습니다. Docker 또는 rkt와 같은 플랫폼 도구를 사용하면 컨테이너를 직접 관리할 수 있지만 대부분의 배포에서는 컨테이너 관리를 위해 Kubernetes와 같은 오케스트레이션 도구를 사용합니다. 필수 사항은 아니지만 Kubernetes는 프로덕션 등급 컨테이너 배포를 위한 표준 도구가 되고 있습니다.
컨테이너는 애플리케이션을 더 작은 개별 구성 요소로 나눌 수 있으므로 인프라 소유자와 개발자 간의 분업이 가능하기 때문에 매우 인기 있는 아키텍처가 되었습니다. 개발 중에는 여러 팀이 다양한 구성 요소에 대해 동시에 작업할 수 있고 배포 중에는 특정 컨테이너를 플랫폼 간에 이동할 수 있으므로 유용합니다. 또한 컨테이너는 개발자가 요구 사항을 소유하지 않아도 애플리케이션 컨테이너를 일련의 알려진 요구 사항에 게시할 수 있는 변경 불가능한 플랫폼을 제공할 수 있으므로 애플리케이션 및 인프라 관리자에게 보다 능률적인 도구를 제공합니다.
애플리케이션 컨테이너화라는 용어는 종종 표준 Linux 런타임 환경의 애플리케이션을 다양한 환경에서 실행할 수 있는 독립형 폼 팩터로 마이그레이션하는 과정을 나타낼 때 자주 사용됩니다. 많은 기업이 컨테이너화 여정을 진행하여 이미 기본 컨테이너 또는 Kubernetes와 같은 도구를 사용하는 보다 포괄적인 컨테이너 관리 전략으로 마이그레이션을 시작했습니다.
모든 NGINX 제품은 NGINX Open Source, NGINX Plus(선택 사항으로 NGINX App Protect 포함), NGINX Unit, NGINX Service Mesh, NGINX Ingress Controller에서 실행되거나 컨테이너 기술 (NGINX Controller)을 바탕으로 구축될 수 있습니다.