代替文=コンテナのターミナルを示すPodman Desktopのスクリーンショット|サムネイル|Podmanはコンテナマネージャーの一例である。 ソフトウェア工学において、コンテナ化(コンテナか、containerization)とは、種類やベンダーに関係なく、クラウド環境または非クラウド環境のいずれかにおいて、ソフトウェアアプリケーションが「コンテナ」と呼ばれる隔離されたユーザースペース内で実行できるようにするための、複数のリソースにわたるオペレーティングシステムレベルの仮想化またはアプリケーションレベルの仮想化のことである。

「コンテナ」という用語は文脈によって異なる意味を持つため、意図された定義が読者の理解と一致していることを確認することが重要である。

用途 各「コンテナ」は基本的に、アプリケーションを取り囲み、並行して稼働する他の環境から独立性を保つ、完全に機能的でポータブルなクラウドまたは非クラウドコンピューティング環境である。個々のコンテナは異なるソフトウェアアプリケーションをシミュレートし、関連する設定ファイル、ライブラリ、および依存関係を束ねることで、隔離されたプロセスを実行する。しかし全体として見ると、複数のコンテナは共通のオペレーティングシステムカーネル(OS)を共有している。

近年、コンテナ化技術はAmazon Web Services、Microsoft Azure、Google Cloud Platform、IBM Cloudなどのクラウドコンピューティングプラットフォームで広く採用されている。コンテナ化は、ソフトウェアのアップデートをより迅速に開発・配備する手段として、アメリカ国防総省によっても推進されており、最初の適用例は同省の制空戦闘機であるF-22であった。

コンテナの種類

OSコンテナ アプリケーションコンテナ

セキュリティ問題

共有OSのため、セキュリティの脅威がコンテナ化されたシステム全体に影響を及ぼす可能性がある。 コンテナ化された環境では、セキュリティスキャナーは通常OSを保護するが、アプリケーションコンテナは保護しないため、望ましくない脆弱性が追加されてしまう。

コンテナの管理、オーケストレーション、クラスタリング コンテナのオーケストレーションまたはコンテナ管理は、主にアプリケーションコンテナの文脈で使用される。このようなオーケストレーションを提供する実装には、KubernetesやDocker swarmなどがある。

コンテナクラスタ管理 コンテナクラスタは管理される必要がある。これには、クラスタの作成、ソフトウェアのアップグレードや修復、既存のインスタンス間の負荷分散、ユーザー数に適応するためのインスタンスの起動や停止によるスケーリング、アクティビティの記録と生成されたログの監視、またはセンサーへのクエリによるアプリケーション自体の監視などの機能が含まれる。このようなソフトウェアのオープンソース実装には、OKDやRancherなどがある。Alibaba、Amazon、Google、Microsoftなど、多数の企業がコンテナクラスタ管理をマネージドサービスとして提供している。

脚注

関連文献

学術誌・論文

書籍

関連項目

Docker Kubernetes Open Container Initiative Podman 仮想マシン 情報隠蔽 関心の分離 ソフトウェアコンポーネント サンドボックス (セキュリティ) サンドボックス (ソフトウェア開発)