知っておくべきコンテナサービスとDocker の基本

  • このエントリーをはてなブックマークに追加

知っておくべきコンテナサービスとDockerの基本

コンテナ型仮想化が生まれた背景

ITエンジニアが、開発・運用面において効率化を図る際に重要な技術の一つが「仮想化」です。OSの環境やアプリケーションの再利用性を高め、環境構築をすばやく行えるようになるからです。

そもそもOSは、ストレージやメモリ・CPUなどのハードウェアに1対1で対応、依存して動作するものですから、複数のOSが一つのハードウェアを同時にコントロールすることはできません。

しかし仮想化の技術によって、ハードウェアを論理的に分割・統合することが可能となり、その結果、一つの物理的なハードウェア上で複数のOSが動作するようになりました。つまり、複数の物理的なハードウェアの管理をすることなく、あたかも複数台のハードウェアで開発をしているかのような状態が実現し、エンジニアの管理・運用の手間を省く一助となったのです。

とはいえ、このような、1台の物理サーバーで複数のOSを利用する形の仮想化は、動作速度の低下をもたらすことにも繋がりました。そこで、そのような欠点を克服すべく、別の形の仮想化が登場しました。

このところ話題の「コンテナ型仮想化」とは、そのような仮想化技術の一つです。では、コンテナサービスとはどのようなもので、主なサービスには何があるのでしょうか。

コンテナ型仮想化の特徴とコンテナサービス

先の説明の補足になりますが、従来の仮想化はハードウェアを論理的にとらえるハイパーバイザといわれるソフトウェア上に仮想的なコンピューターを作り、そこにOSをインストールするという方法になっています。

つまり、1台の物理的なハードウェア上に元となるOS(ホストOS)を設定し、その上に作った論理的なハードウェアにさまざまな種類のOS(ゲストOS)を搭載するということです。

この場合、ゲストOSはホストOSの起動後に起動する、論理的なハードウェアの台数分のライセンスを準備するなどの作業が必要となり、少々手間のかかる印象があります。また「ハードウェア仮想化」と呼ばれるこのやり方は、そもそもの物理的なハードウェアの性能に制約されるため、パフォーマンスの低下が問題といわれてきました。

では、昨今注目を集めている「コンテナ型仮想化」は、どこが違うのでしょうか。

コンテナ型仮想化はOS仮想化ともいわれる、発想の異なる仮想化です。ホストOSの上に、同一のOS上で動く独立した区画を作成し、その区画がユーザーに提供されるわけですが、その区画は、まるで独立した専用のOS環境であるかのように動きます。

コンテナ型仮想化の利点としては、ハードウェア資源を仮想化することなく活用するので、ハードウェア仮想化に比べると高速で動くことが期待できます。

コンテナ型仮想化は、さまざまなOSを動かしたいような場合には向きませんが、コンテナごとにOSを起動するようなことがないので、OSのためのディスク領域も必要なくホストOS以外のOSの起動プロセスも不要です。

このようなコンテナ型仮想化を実現するには、コンテナサービスの導入が必要です。では、そのコンテナサービスにはどのようなものがあるか、ご紹介しましょう。

コンテナサービスを代表する「Docker」

コンテナサービスの代表的なものとしてあげられるのが、Docker社の「Docker」です。これはDocker社が開発した仮想化技術ですが、現在は、マイクロソフトやインテル、レッドハットなどのベンダーによる「Open Container Initiative」で業界統一仕様として取り扱われており、Linux、Windows、MacOS上で動作します。

Dockerの利点としては、コンテナを生成するための「DockerFile」と呼ばれる設定ファイルに、OSやライブラリーなどのコンテナの設定内容を記述し、再利用できる点にあります。これによって、テキストファイル一つで簡単にほかのサーバーに環境を構築することができるのです。

他者が作成したDockerFileが公開されていれば、それを使って同様の環境を構築するのもたやすく、ハイブリッドクラウド(プライベートクラウド、パブリッククラウド、オンプレミスなど複数の構成を組み合わせたクラウド)などでの環境再現性も抜群です。こうしたメリットがMicrosoft AzureやAWSなどの著名なクラウドサービスでも生き、幅広く活用されるようになっています。

Dockerの概要

コンテナサービスはどのような場面で役に立つのか

コンテナサービスの活用で恩恵を受けやすいのは、DevOpsに代表される、最新版のリリースを頻繁に行うようなサービス・開発スタイルでしょう。

斬新なビジネスアイディアと思っていたものも、タイムリーに開発・リリースできなければ時代遅れなものになってしまうのが現代のインターネットサービス事情です。枯れたシステムをどっしり運用するのではなく、新しい機能を日々追加していくようなサービスでは、開発からリリース・運用までの環境をすばやく確実に準備しなければなりません。

そうしたときに、活用したいミドルウェアを稼働させるための環境をすばやく構築できるコンテナサービスは、ビジネスのスピードアップに大きな味方となります。

いまやコンテナサービスは、真っ先に取り組んでおきたい基幹技術であるといえるのではないでしょうか。

photo:Thinkstock / Getty Images