年々拡大し続けるクラウドサービス市場とともに、革新が著しい技術といえばデスクトップやアプリケーション、サーバーなどの「仮想化」です。特に近年、活用されているのが「コンテナ」という仮想環境を作り出す技術です。今回は、注目を集めるコンテナの仕組みやメリット、従来の仮想化技術との違いについて解説します。
コンテナとは
コンテナとは、仮想コンピュータ環境で仮想的なOSを動作させている「ホストOS」から、アプリケーションの本体や設定ファイルなどをパッケージにして切り離した仮想環境のことをいいます。
従来の仮想技術は、ホストOSがつくる「ゲストOS」でアプリケーションの実行環境を構築していました。一方、コンテナはゲストOSを起動することなく仮想環境をつくることができるという点が従来の方法との大きな違いになります。
例えば、バージョンの異なるPHPの動作テストを行う際、従来であればゲストOS上でそれぞれを動かすことが一般的でした。しかし、コンテナ仮想化を利用した場合、ホストOS上で動かせるのです。
■従来の仮想化のプロセス
ホストOS ⇒ 仮想化ソフトウェア ⇒ ゲストOS ⇒ プロセス
■コンテナによる仮想化のプロセス
ホストOS ⇒ コンテナ(プロセスはコンテナ内でパッケージ化)
このように仮想化ソフトウェアとゲストOSが必要ない分、より高速にプロセスを起動させることができるのです。
Docker(ドッカー)とは
コンテナによる仮想化に欠かせない存在が「Docker(ドッカ―)」です。
コンテナを構築するには、namespaceという技術を使って、プロセス空間やファイルシステムをホストOS内で分離するほか、コマンドやライブラリの取得といった多くの作業が必要になります。このような煩雑な作業をまとめて行えるのが、オープンプラットフォーム「Docker」です。
Dockerを利用することで容易にアプリの実行環境を構築でき、さらにリソースの消費量が少ないので物理サーバー上でより多くのコンテナを稼働させることができます。
コンテナのメリット
ゲストOSではなく、ホストOS上で仮想環境を構築することで、どのようなメリットが得られるのでしょうか。従来の手法と比べながら、コンテナの特長を紹介します。
コンテナのメリット1:アプリケーションを高速起動できる
前述したとおり、コンテナはホストOSのカーネルを共有できるのでコンマ数秒の速さでアプリケーションを起動できます。一方、仮想マシンは起動するのに数分かかってしまうことも珍しくありません。
コンテナのメリット2:処理が軽量で高パフォーマンス
コンテナは仮想OSなどにCPUやメモリーを消費することがないので、物理サーバーの負荷をより小さくすることが可能です。その結果、前述した起動以外にもコピーや廃棄といった処理を素早く行えます。
コンテナのメリット3:チーム作業に適している
コンテナは従来の手法よりも「環境構築作業が短い」、「代替環境に切り替えやすい」といった特長があります。これらのメリットは、開発(Development)と運用(Operations)の担当者がより密になって開発を進める「DevOps(デブオプス)」という手法ととても好相性です。より柔軟かつ迅速なシステム開発を後押しします。
また、様々なパブリッククラウドなど場所を選ばずに稼働できることも、チームでの作業をより円滑にできるポイントです。
コンテナのメリット4:本番環境でのトラブルの低減
コンテナの仮想環境構築の容易さから、本番に近い構成での自動テストやベンチマークなどが比較的簡単に行えます。これは本番環境でのトラブル低減につながるといえるでしょう。
コンテナのデメリット
コンテナには従来の仮想化技術にはない、開発・運用効率向上につながるメリットがたくさんあるものの、デメリットもいくつか存在します。その1つは、コンテナはクラウドでの運用が前提になっているので、すでにオンプレミスで運用している場合は移行に関わるテストや運用手順の変更など、手間とコストが発生することです。また、セキュリティ基準が満たせないケースも考えられます。
加えて、ホストOSに依存するのでベースとなる環境以外のOSのシステムはコンテナでは動かすことはできません。一方、ゲストOSを利用する手法であればOSに関係なく仮想マシンを稼働することができます。
新技術のコンテナに注目
複数のアプリケーションを迅速に起動できるコンテナについて解説しました。コンテナは新しい技術であり、今後のシステム開発において主流になる可能性もゼロではありません。IT担当者であればアンテナを張っておいて損はないでしょう。
三谷商事にご相談ください
今回のコラムの内容にご興味がありましたら、教育現場での実績が豊富な三谷商事にご相談ください。