DockerがUnikernelを買収。1秒以下で起動しハイパーバイザで安全に分離されるUnikernelが新たなコンテナの仲間入り
Dockerが急速に支持を得ている大きな理由の1つは、Dockerが提供するコンテナが軽量で迅速に起動する点にあります。
その軽量さや迅速な起動をコンテナ型仮想化ではなく、ハイパーバイザを用いた従来の仮想化で実現するのがUnikernelです。
そのUnikernelの開発を行っているUnikernel Systems社の買収を、Docker社が発表しました。
アプリケーションに最適化されたUnikernel
Unikernelとは、ターゲットとなるアプリケーションのコードと、その実行に必要な機能以外を徹底的にそぎ落としたOSとを合わせて1つにビルドしたものです。
ターゲットとなるアプリケーションのソースコードごとにビルドされるため、Unikernelはアプリケーションごとに異なるものとなります。以下のスライドは、Unikernel Systemsが昨年のDocker Conで行ったセッションから。
例えばNginxのUnikernelは2.2MB、MysqldのUnikernelは4.51MB、PHPのUnikernelは4.56MBです。それぞれのUnikernelはターゲットのアプリケーションしか起動されません。
Unikernelの利点は、起動が1秒以内と超高速で使用メモリも少なく軽量であること、アプリケーションに徹底的に最適化されていること、そしてコードが絞り込まれている分セキュリティの脆弱性リスクが非常に低いところです。
そしてこのUnikernelをKVMやXenといったハイパーバイザによる仮想マシンで利用することで、まるでコンテナのように高速に起動し軽量でありながら、安全に分離された環境を利用できるようになります。
ただしUnikernelには課題もありました。アプリケーションごとにUnikernelをビルドする手間や、さまざまなUnikernelイメージを管理し運用する手間がかかるのです。
そこで彼らが注目したのがDockerでした。
DockerからUnikernelのビルド、シップ、ランが実現
Unikernelは、DockerのコンテナAPIを取り込みました。例えばDockerファイルに対応し、Unikernelのビルドやイメージ管理など、ビルド、シップ、ランのすべてがDockerコマンド経由で行えるようになったのです。
これでUnikernelの課題は解消され、しかもDockerからはコンテナの新たな一員として、Dockerコンテナと同じように迅速かつ軽量に扱え、しかもより安全に分離された空間を備えたUnikernelが利用できるようになったのです。
Docker社が買収したUnikernel Systems社は、こうしたUnikernelの開発の推進を行ってきた企業です。
今後、Dockerに正式対応したUnikernel製品群がリリースされることになるでしょう。Unikernel SystemsにはXenのエンジニアも多くいるとのことなので、Unikernel用のハイパーバイザもリリースされるかもしれません。
Dockerはもはやコンテナ型仮想化の企業ではない
コンテナの利点を活かしつつ、ハイパーバイザの技術を用いてより安全に分離するという試みは、マイクロソフトが「Hyper-V Container」として、VMwareは「vSphere Integrated Containers」や「Photon Platform」として取り組んでいます。Unikernelの買収は、Docker社がこれらと競合する技術を手に入れたことを意味します。
そしてDocker社はこの買収により、自身の立ち位置をより明確に示したといえます。それは、Docker社とはコンテナ型仮想化を提供するのではなく、マイクロサービスアーキテクチャによるアプリケーションの実現を支援するツール群とサービスを提供する企業なのだ、ということです。
そしてそれはVMwareやマイクロソフトやRed Hatなど多くのソフトウェア企業だけでなく、広い意味でGoogleやAWSなどのクラウドベンダも同じ市場を見ています。Dockerはそうした企業と競合することを理解しており、そのために彼らなりに何手も先を読みながら買収を続けているのでしょう。
下記は昨年行われたDocker ConでのUnikernelのデモです。
あわせて読みたい
GMO、先週の24時間にわたるサービス障害時にはデータセンター内の約12%が電源喪失。変圧分電盤故障が原因の可能性。監視体制の強化など対策
≪前の記事
マイクロソフト、Node.jsのJSエンジンとして同社のChakraCoreも使えるように、Node.jsのメインラインにプルリクエストを投げたと表明