株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

バルセロナより: Dockerとは? Containerとは? - その2 : Copy on Write

みなさん、こんにちは。少し間が空いてしまいました。というのも国内最大のクラウド・仮想化のイベントvForumが近づいてきておりますので、準備に追われてしまいまして・・・。まだお申し込みでない方はぜひお申込みください。

当社の招待コードは「SP20063」です。招待コードでの登録者は来場時にノベルティを貰えるようなのでぜひご利用ください。

また、今回も素晴らしいスライドから何枚か借用させていただく当社が誇るvExpert工藤さんのセッションもぜひご参加ください。本邦初公開のPernixDataのブースも当社メンバーが対応いたします。

と、壮絶な宣伝をした後に、前回に引き続きDockerやContainerのお話をしていきます。

なぜDockerを使うとアプリケーションのライフサイクルを短縮できるのか?

Dockerは前回述べたようにリンククローンのようなテクノロジーを保持しています。リンククローンは親VMとその差分(デルタディスク)から構成されるクローンで、差分しか保持しないためにディスクの容量をさして消費せずに大量のVMを構成する技術です。VMwareにも搭載されており、通常は同一の環境を大量にクローンする場合(VDI環境やvCloud Directorの環境)で利用されています。これはこれで非常に有用なのですが、Dockerは更にVMware Mirageのようにアプリケーション単位で抜き差しできる(リンククローンのように親:子が必ずしも1:1に対応しなくても良い)構造になっています。

Fig139

読み取りを実線、書き込みを点線で表していますが、ネットワーク越しの緩やかな構造のレイヤリングであるMirageとは異なり、Dockerはディスク上のイメージをRead-Onlyでマウントし、書き込みは差分(⊿)ディスクへとリダイレクトする方式で、実際のOSと変わらないI/Oの速度を実現します(Copy-On-Write)。とくにDockerの主戦場であるLinuxのアプリケーションはステートレスであるケースが多く、Copy-on-Writeを発生しにくいアプリケーションが多いこともあると思います。

Copy-On-Writeが開発者に与える影響

Web3層構造のアプリケーションを例にとって考えてみましょう。開発者は今まで、Webサーバを用意し、アプリケーションサーバを用意し、データベースサーバを用意して、初めて開発を始めることが出来ました。vSphereを利用する場合は3つの仮想マシンのテンプレートを用意しておくことで、比較的短時間で準備を終えることが出来ました。Containerを利用する場合は更にこれを短縮できます。アプリのインストールは先程の要領で行える上に、OSなどの設定はDocker側でレシピさえ指定しておけば自動で行ってくれるからです。開発したアプリケーションが売上を決める会社では、開発環境の準備は無駄な時間にしかならないのですから、この技術の活用は非常に効果があることはもちろんですが、毎回大差もなく、(さして面白くもない)開発環境の作成に時間を取られるのは開発者にとっても面倒がなくてよいということです。

Fig140

詳しくは述べませんが、ミドルウェア・アプリケーションのアップグレードなども簡単に行えるため、頻繁にアプリケーション、ミドルウェアを変更するような会社にとっては理想的なインフラです。

ITインフラはvSphere、開発者はコンテナ(Docker)なのか?

では、開発者中心の環境ではvSphereは利用されないのでしょうか?決してそうではありません。Container環境を利用することで第3世代ITインフラとして十分に通用する俊敏性を備えることはできますが、先に述べたようにHA/vMotionなどは利用できず、またパフォーマンスを保証する、きっちりと管理するという面でもContainerレベルでの分離では難しいということもわかっています。

そこでVMware社はContainerをvSphere内で(正確にはvSphere内のVM内で)動作させることを推奨しています。分離するテクノロジが2重になるため、パフォーマンスの懸案も出ているようですが、こちらの記事を確認する限り、Compute, Storage, Networkのあらゆるレイヤで気にする必要がないほどにパフォーマンスの低下は小さいようです。「物理と仮想のパフォーマンスの差はほとんどない」と言われれば当たり前の結果なのですが、「vSphereとDockerの双方のメリットを受けてもパフォーマンスに劣化がない」と言われると、コレはすごいことです。

Fig141_2

じゃあVMの上でContainerを使えば解決?

Containerの技術は素晴らしいのですが、やはりOSに依存してしまう技術です。現時点ではLinux、そして将来Windowsでの実装がされても、Linux版とWindows版の間に技術的な共通項はハイレベルな部分にとどまってしまうのではないかと想像しています。

VMware社はこの部分を解決するためにすでに、次なるプロジェクトを始動させています。コレについては次回の記事にまとめさせていただきます。

記事担当者: マーケティング本部 三好哲生 (@pernixdata_netw)