コンテナは、applicationsのポータブル フォーム ファクターを作成およびサポートするために設計された仮想化テクノロジです。つまり、さまざまなプラットフォームにapplicationを簡単に展開できるようにします。 コンテナは、applicationのすべての要件 (applicationコード自体、applicationの実行に必要なライブラリなどの依存関係、applicationとその依存関係のランタイム環境) を、プラットフォーム間で独立して転送および実行できるフォーム ファクターにパッケージ化します。 コンテナは、一般的な OS ランタイム環境からapplicationを抽象化したものです。
Docker は最もよく知られているコンテナ実装形式ですが、rkt/CoreOS、containerd、Hyper‑V コンテナなどの他のコンテナ テクノロジや、cgroup や名前空間などの低レベル テクノロジもあります (どちらもコンテナ エンジンと同様にapplicationの分離に使用されますが、コンテナと同じように分離された移植性は提供されません)。 Docker や rkt などのプラットフォーム ツールを使用してコンテナを直接管理できますが、ほとんどのデプロイメントではコンテナ管理にKubernetesなどのオーケストレーション ツールが使用されます。 必須ではありませんが、Kubernetes は実稼働レベルのコンテナ デプロイメントの標準ツールになりつつあります。
コンテナは、applicationをより小さな個別のコンポーネントに分割し、インフラストラクチャの所有者と開発者の間で分割できるため、非常に人気のあるアーキテクチャの選択肢となっています。 これは、開発時には別々のチームがさまざまなコンポーネントを並行して作業できるため有益であり、展開時には特定のコンテナをプラットフォーム間で移植できるため有益です。 コンテナは、不変のプラットフォームを提供できるため、開発者は一連の既知の要件を所有することなく、それらの要件に合わせてapplicationコンテナを公開できるため、applicationおよびインフラストラクチャ管理者にとってより合理化されたツールも提供します。
applicationコンテナ化という用語は、applicationを標準の Linux ランタイム環境から、多くの環境で実行できる自己完結型のフォーム ファクターに移行するプロセスを表すためによく使用されます。 多くの企業はコンテナ化の取り組みを順調に進めており、基本的なコンテナへの移行、または Kubernetes などのツールを使用したより包括的なコンテナ管理戦略への移行をすでに開始しています。
すべての NGINX 製品は、 NGINX Open Source 、 NGINX Plus (オプションでNGINX App Protectを使用)、 NGINX Unit 、 NGINX Service Mesh 、 NGINX Ingress Controller などのコンテナ内で実行することも、コンテナ テクノロジー ( NGINX Controller ) 上に構築することもできます。