サーバ仮想化範囲から見る相違点

サーバ仮想化範囲から見る相違点

コンテナ型とホスト型については、ホストOSの上に仮想化アプリケーションをインストールしている。そのためホストOS上に特定のアプリケーションを稼働させることもできるが、その分リソースは消費されてしまうし、また管理も煩雑になるだろう。その点ハイパーバイザ型は、サーバ全体を仮想化するので管理がしやすいが、その反面柔軟さに欠けている側面を持つ。仮想化方式を選択する際には、それぞれの得意・不得意をしっかりと把握することが重要だ。

Dockerの特徴

Dockerの特徴や、ハイパーバイザ型の仮想化製品との差異とそれらに伴うメリット、デメリットを整理していきたい。Dockerの特徴は、「軽量」「携帯性」「揮発性」の3つのキーワードで表される。

軽量

前述のように、DockerコンテナはベースOSとカーネルを共有する。これにより、コンテナ自体が使用するメモリやハードディスクのリソース使用量が小さくなる。またデバイスへのI/Oが、ベースOSからエミュレートなしに直接行われるため、動作も高速になる。このように、リソース使用量だけではなく、実行自体のオーバーヘッドを少なくすることも実現している。

携帯性

「携帯性」とは、作成したDockerイメージやDockerfileをDockerが導入されている別のベースOSで実行できることを意味する。作成したDockerイメージを別環境に持ち出せることによって、開発チームからテストチームへの環境引き渡しがスムーズに行え、さらには環境依存による不具合発生のリスクも低減できる。

揮発性

「揮発性」とは、Dockerのイメージ自体は起動されても更新は保存されず、明示的に保存(コミット)をしなければコンテナ破棄時に変更分が消えてしまう仕様を意味する。Dockerではこの仕様を、AUFSというファイルシステムを利用して実現している。

AUFSは“Another Union File System”の略で、異なるファイルシステムのファイルを透過的に重ね、一つのファイルツリーを構成するものである。身近な例で言えば、OSのLive CDに利用されている。Live CDから起動し、変更を加えると起動している間は変更されているように見えるが、再起動すると変更は消えてしまう。

Dockerのメリット

Dockerのメリットとしてはまず導入が簡単であることがあげられるだろう。
Dockerのパッケージをダウンロードしてきてパスを通しても良いし、yumやapt-getなどを用いたパッケージインストールも可能である。特に難しい設定を加えなくとも利用を始められる。さらにコンテナイメージのリポジトリであるDockerHubが存在しており、Dockerfileの書き方がわからない初心者でもDockerHubからイメージをダウンロードしてきて実行するだけでDockerの世界を体験できる。DockerHubには個人が作成したものから企業が作成したものまで幅広いイメージがアップロードされており、カーネルを共有出来るのであれば、ほとんどのディストリビューションをDockerコンテナ上で利用してみることも出来る。この場合も、OSのインストールは不要だ。

次のメリットとしては、特徴にも書いたが軽量であること。そのためにDockerの検証や利用に新しいサーバを購入する必要はなく、手持ちのLinuxサーバ、またはLinuxデスクトップからでも利用が可能だ。もちろんVMにDockerを導入しても良い。

注意するべき点として、現状ではまだWindows上でDockerを利用出来ないことが挙げられる。これについては先日Microsoftから発表があり、次期Windows Server OSよりDockerを正式サポートするようだ。

Dockerコンテナは、ホストOS上のシステム領域に影響を及ぼさないというのも大きなメリットだろう。Dockerコンテナではカーネルは共有しているが、ユーザ領域は完全に分けられているので、Dockerコンテナ上で環境を変えたとしてもホストOS側には一切影響しない。

Dockerのデメリット

Dockerにももちろんデメリットはある。まず挙げられるのが、ポートフォワードの問題だ。ポートフォワードは、コンテナを外部公開するためにDockerが標準で用意している技術である。ポートフォワードは、その仕様としてポートを専有するため、複数のコンテナで同一ポートを利用して外部へ公開したい場合には、Docker標準の機能では実現が難しい。

またDockerコンテナが揮発性である点もデメリットの一つだ。これはメリットにもなっているのだが、DockerコンテナはAUFSを利用しているため、明示的に保存を行わければ更新が破棄されてしまう。特に、意図せずしてコンテナが削除された場合には、それまでに行った更新分は全て破棄されてしまうのだ。このデメリットを回避するためには、コミットの自動化や更新データの外部メディアへの退避といった対策が必要となる。

さらに、Dockerの管理が現状ではCLI上でのコマンド操作しか準備されていない点も挙げられる。Dockerの管理や操作は直感的ではなく、管理者や運用者はDockerについての知識が必要となる。知識が必要になるということは、属人性が高まることを意味する。この問題は、外部ツールを利用することで解決できるだろう。実際、稼働中のコンテナ一覧やコンテナの起動・停止等をブラウザ上から実行できるツールが、多くのベンダーからリリースされている

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30