カスタム検索
表示順:
Relevance
Relevance
Date
ウェブ
 
 
 

コンテナの軽量さと、より安全な分離を実現する「gVisor」、Googleがオープンソースで公開

2018年5月7日

Googleがオープンソースで公開したgVisorは、準仮想化のような仕組みを用いて従来のコンテナよりも安全性を高めたコンテナランタイムだ。Kubernetes時代の標準コンテナランタイムとなる有力候補かもしれない。


Dockerなどに代表されるコンテナ型仮想化は、OSのユーザー空間の名前空間を分離することなどで実現されています。

この仕組みの利点は、あらかじめ起動されているOSの上で名前空間を分離するだけでコンテナが起動できる点にあります。これがコンテナの迅速さや軽量さにつながっている一方、コンテナ間でOSのカーネルを共有しているためにコンテナ間の分離レベルは高くなく、同一OS上で稼働している別のコンテナの負荷の影響を受けやすかったり、コンテナからOSのシステムコールを直接呼び出せることなどによるセキュリティ上の課題を引き起こしやすくもあります。

OCIに準拠し、runc互換のgVisor

Googleがオープンソースで公開した「gVisor」は、従来のコンテナの軽量さを保ちつつ、コンテナの分離について新たな実装を提供することよって、準仮想化に近い、より安全な分離を提供するコンテナランタイムです。

gVisorはコンテナ実装の標準であるOCI(Open Container Interface)に準拠しておりDockerのコンテナ実装であるruncとの互換性を備えているため、runcと置き換えてDockerやKubernetesのコンテナランタイムとして用いることができると説明されています。

gVisorは安全に分離された「サンドボックス化されたコンテナ」

GoogleはgVisorを、従来のコンテナよりも安全に分離されたコンテナ環境として「サンドボックス化されたコンテナ(Sandboxed containers)」と呼んでいます。

gVisorはホストとなるカーネルの上に独自のgVisorレイヤを提供し、コンテナからのシステムコールをいったん受け止めています。このレイヤがあることによって、従来のコンテナよりも安全な分離と、カーネルに対するよりセキュアな環境を実現しているのです。

gVisorの仕組み

その仕組みは準仮想化に似ていると、次のように説明されています。

gVisor provides a strong isolation boundary by intercepting application system calls and acting as the guest kernel, all while running in user-space. Unlike a VM which requires a fixed set of resources on creation, gVisor can accommodate changing resources over time, as most normal Linux processes do.

gVisorはつねにユーザー空間で稼働していますが、ゲストカーネルとして振る舞い、アプリケーションのシステムコールを横取りすることで強力な分離境界を提供します。起動時に一定のリソースを要求する仮想マシンとは異なり、gVisorは通常のLinuxプロセスと同様、利用するリソースはそのときに応じて変化します。

gVisor can be thought of as an extremely paravirtualized operating system with a flexible resource footprint and lower fixed cost than a full VM.

gVisorは仮想マシンと比較して、柔軟なリソース容量に対応し小さなコストで実行できる、例外的な準仮想化オペレーティングシステムであると考えることができるでしょう。

Kubernetes時代の標準コンテナランタイムになるか

コンテナランタイムはコモディティ化し、今後はKubernetesを軸としたソリューションを提供することがコンテナの中心的な話題となるだろうと、以前の記事「Dockerコンテナ時代の第一章の終わり、そして第二章の展望など」で書きました。

コンテナ環境においてKubernetesが普及してくると、ホスト上に多様なアプリケーションのコンテナや、多様なテナントのコンテナが並行して実行されるようになるでしょう。

すると当然ながら、コンテナ間をより安全に分離したいという要求が高まってくるはずです。

すでに、より分離レベルを高めたコンテナ実装としてはOpenStack FoundationによるKata Containerや、マイクロソフトのHyper-V Containerなどがありますが、Kubernetesの開発元でもあるGoogleから登場したgVisorは、より安全性の高い分離を求められるKubernetes時代のコンテナランタイムとして、標準の座を狙える有力候補になるのかもしれません。

follow us in feedly

カテゴリ Docker / コンテナ / 仮想化
タグ  Google , Kubernetes , コンテナ型仮想化


必要な栄養素すべてを含んだパーフェクトパスタで、どんなに忙しくても完璧な栄養を (BASE FOOD)
PR
前の記事
Node.js 10がリリース、N-APIが安定化しV8非依存に。2年半前に初のLTSとなったNode.js 4.xはついにEOL


カテゴリ



Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

人気記事ランキング

  1. GoogleがフルマネージドなRedis、「Cloud Memorystore」をGoogle Cloud Platformで提供
  2. Go言語がスピード感あふれる新ロゴを発表。マスコットキャラクターのGopherくんは存続
  3. Node.js 10がリリース、N-APIが安定化しV8非依存に。2年半前に初のLTSとなったNode.js 4.xはついにEOL
  4. パスワードに依存しない認証「WebAuthn」をChrome/Firefox/Edgeが実装開始、W3Cが標準化。Webはパスワードに依存しないより安全で便利なものへ
  5. オラクル、JavaやJavaScript、Ruby、Pythonなど多言語対応を単一ランタイムで実現する「GraalVM」をオープンソースで公開。Twitterが本番環境で採用
  6. 来月にはJava 10が登場し、9月にはJava 11が登場予定。新しいリリースモデルを採用した今後のJava、入手方法やサポート期間はこう変わる(OpenJDKに関する追記あり)
  7. Publickeyをhttps化しました(テスト投稿)
  8. Webアプリのストーリーボードやプロトタイプがノンプログラミングで作成可能な「Indigo Studio Essential」無償公開。インフラジスティックス
  9. Netflix、自社開発したコンテナマネジメントプラットフォーム「Titus」、オープンソースで公開
  10. MySQL 8.0正式版がリリース。性能が最大で2倍、JSONデータや地理情報などサポート。ロールによるユーザー権限の管理も可能に


新着記事 10本


PR - Books


fig

fig

fig