【図解】コレ1枚でわかるコンテナ管理ソフトウエア/コンテナ・エンジン
「コンテナ」を実現するのが、「コンテナ管理ソフトウェア(コンテナ・エンジンともいう)」です。サーバーが変わっても、この「コンテナ・エンジン」があれば、その上で動くコンテナは、どのサーバーでもそのまま動くことが保証されます。そのため、システム環境の違いを意識することなく、アプリケーションを実行できます。クラウドが当たり前の世の中になり、このコンテナの特性は、特定のクラウド・サービスに依存する(ロックイン/固定化されること)ことなく、アプリケーションを実行できることを意味し、アプリケーション展開の自由度を高めることにもなります。
また、運用管理者は、「コンテナ・エンジン」を自分たちで使うインフラ環境で安定稼働することを保証しておけば、サーバー仮想化のようにアプリケーションごとに、アプリケーション開発者が運用管理者に本番環境への移行を個別に相談して、対応してもらわなくても、開発者が自分でできるようになります。
アプリケーション開発者は迅速にアプリケーションを開発、変更してユーザーに提供でき、一方で運用管理者はインフラを安定稼働させるといった、それぞれの責任を独立して果たすことができます。その結果、本番環境へのデプロイメント(移行作業)は迅速、頻繁に行えるようになり、アプリケーション開発や変更に伴うメリットをユーザーが直ちに享受できるようになります。
この「コンテナ・エンジン」として、広く使われているのが、「Docker」です。Dockerが注目されるようになったのは、コンテナを生成する設定を「Dockerfile」として公開し、他のユーザーと共有できる仕組みを設けたことです。これにより、他のユーザーが作ったソフトウェアとそれを動かすソフトウェア構築プロセスをそのままコンテナに格納して他のサーバーで実行できるようになりました。これによって物理マシンや仮想マシンを使う場合のように、アプリケーションを稼働させるためにOSをインストールして、設定・テストするなど作業が不要となり、本番移行の手間と時間が大幅に削減できるようになりました。
昨今ではコンテナ仕様を標準化する動き(OCI/Open Container Initiativeというコミュニティによる標準化作業)もあり、コンテナの互換性を保ちながら、相互運用できるDocker以外のコンテナ・エンジン、例えば、containerdやcri-oなども登場し、多様化が進みつつあります。