BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

FOSDEM仮想化 - コンテナの仕組みを知る

| 作者: Carlos Sanchez フォローする 0 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2015年2月19日. 推定読書時間: 3 分 |

原文(投稿日:2015/02/05)へのリンク

RedHatのシニアソフトウェアエンジニアであるVincent Batts氏が,FOSDEMの仮想化関連の開発者セミナでLinuxコンテナとDockerについて講演して,さまざまなストレージドライバの長所と短所,イメージフォーマット,イメージへの署名などについて語った。

Linuxカーネルの機能を応用したコンテナは,古くから存在している技術をベースとする。

  • リソース管理グループ(cgroup) – メモリやCPU,ディスクI/Oなどのリソースを分類し,使用率の制限を設定する。
  • ネームスペース・アイソレーション – プロセスをグループ化して分離し,グループを越えたリソース参照やアクセスを禁止する。

一時的コンテナ(ephemeral container)というコンセプトを一般に認知させたのがDockerだ。Dockerのコンテナは,クリーンな状態でローンチされた後,所定の状態に到達する。inspect,restart,commitといったコマンドによって,以前のスナップショットを管理することが可能だ。

Dockerの基盤となるストレージドライバは変更が可能で,さまざまな機能やパフォーマンス,安定性のものがある。

  • vfs: スリルもマジックもないストレージドライバ。Docker内でDockerを実行できる,数少ないドライバのひとつでもある。
  • aufs: 高速だがメモリを大量に消費する,非アップストリームドライバ。ubuntuカーネル独自のもの。システムにaufsユーティリティがインストールされていれば,Dockerはそれを利用する。start/stopコンテナイベントの数が多い場合には,メモリを大量に消費する。また,いくつかの限界値において,デバッグが困難と思われる問題が存在する。
  • devicemapper: 一般的にサポートされているデフォルトドライバ。多くのコントリビューションによって改良が加えられている。シン・プロビジョニング(thin provisioning)と"コピー・オン・ライト"スナップショットを使用する。最も低速なドライバだが,チューニングによって実運用時のパフォーマンスを向上することが可能だ。メタデータとデータ用に2つのブロックデバイスを必要とする。また,高速なI/Oが必要な場合には適さない。
  • brfs: 高速に動作する実験的ドライバ。まだバグが残っているため,データ破損の発生する可能性がある。
  • overlayFS: ユニオンファイルシステムを利用した新しいドライバ。アップストリームを含み,極めて高速に動作する。最終的に3.18.0カーネルにマージされた後は,カーネルに密接に組み込まれた構造になっている。

ストレージドライバの選択に関して,氏は,次のようにアドバイスする。

明確な勝者はありません。 デフォルトはどれも一般的なものなので,あなたのユースケースに最も適したものを学んでください。

コンテナレイヤはLXCにはなく,Dockerで導入された新しい概念だ。コンテナは不変(immutable)で読み取り専用であり,読み書きのスナップショットはその上に配置される。主な違いはパフォーマンスに関する部分である。ストレージドライバではレイヤ間の違いを演算する必要があり,その部分が各ドライバに特有だからだ。btrfsが高速なのは,その差異計算をネイティブに行っていることによる。

Dockerのポータブルイメージフォーマットは,データ転送で一般的に使用されているtarアーカイブで構成される。

  • commitを使用して,イメージをコンテナにコミットする。
  • docker pushsaveを実行する。
  • docker buildを使用して,既存イメージにコンテキストを追加する。

イメージを作る場合には,Dockerが各レイヤの差分を取得して,その差分によるtarアーカイブを生成する。pullする時は,ファイルシステム内でそのtarを展開する。pullとpushをもう一度行うと,そのtarボールが更新される。プロセスやパーミッション,ファイル属性,あるいはタイムスタンプが変更されている可能性があるためだ。

イメージへの署名は非常に困難である。イメージは読み取り専用でマウントされているが,イメージレイヤは毎回組み換えられているためだ。外部からdocker saveでtarボールを生成して,pgpでアーカイブに署名することは可能である。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT