コンテナとは、アプリケーションのポータブルなフォームファクタを作成・サポートするために設計された仮想化技術で、さまざまなプラットフォームへのアプリケーションの展開を容易にします。コンテナは、アプリケーションのコード、アプリケーションの実行に必要なライブラリなどの依存関係、そのための実行環境など、アプリケーションに必要なすべての要素をパッケージ化し、プラットフォーム間で独立して持ち運び、実行することができるモジュール技術です。コンテナは、一般的なOSの実行環境から離れ、アプリケーションを抽象化したものです。
コンテナの実装形式としてはDockerが最もよく知られていますが、他にもrkt/CoreOS、containerd、Hyper Vコンテナなどのコンテナ技術や、cgroupsやnamespacesなどの下層レベルの技術があります(いずれもコンテナエンジンと同様にアプリケーションの分離に使用されますが、コンテナと同じように分離されたポータビリティを提供するものではありません)。Dockerやrktのようなプラットフォームツールを使ってコンテナを直接管理することもできますが、ほとんどのデプロイメントではコンテナ管理にKubernetesのようなオーケストレーションツールを使用しています。必須ではありませんが、Kubernetesはプロダクショングレードのコンテナデプロイメントの標準ツールになりつつあります。
コンテナは、アプリケーションをより小さな個別のコンポーネントに分割できるため、インフラ運用者と開発者の間で役割分担が可能となり、柔軟性の高いアーキテクチャの選択肢として注目を集めています。これにより、開発の際には、別々のチームが様々なコンポーネントに並行して取り組むことができ、デプロイの際には、特定のコンテナをプラットフォーム間で移動できるなど、非常に効率よく作業できます。また、コンテナは、要件を特定の開発者だけが所有するのではなく、既知の要件に合わせてアプリケーションコンテナを実行することができるイミュータブルなプラットフォームを提供することができるため、アプリケーションやインフラの管理者にとって、効率よく管理できるツールとなります。
アプリケーションのコンテナ化とは、アプリケーションを標準的なLinux実行環境から、様々な環境で動作可能な自己完結型のフォームファクタに移行するプロセスを意味する言葉です。既に多くの企業で、コンテナ化が進められており、基本的なコンテナへの移行や、Kubernetesのようなツールを使ったより包括的なコンテナ管理戦略への移行が進んでいます。
NGINX Open Source、NGINX Plus(NGINX App Protectオプション)、NGINX Unit、NGINX Service Mesh、NGINX Ingress Controllerなど、すべてのNGINX製品はコンテナで動作します。
最新のアプリケーションを提供するために、私たちがどのようにサポートできるか、ぜひ今すぐお問い合わせください。