新春特別企画

2015年のLinuxのコンテナ技術

この記事を読むのに必要な時間:およそ 5.5 分

LXC

LXCは2014年の2月に1.0がリリースされました。それまでもその後しばらくもホスト上できちんとコンテナが作成でき,起動ができるという点をまじめに追求してきました。12月に1.0.7がリリースされ,かなり完成度が上がっていますので,そろそろ完成度を上げるという点ではやることが少なくなってきた気がします。

それに伴い1.1リリースの話が出てきており,予定では2015年1月にリリースの予定になっています。1.1の新機能の目玉は前述のCRIUによるCheckpoint/Restoreサポートと,最近のバージョンのsystemdへの対応です。

この原稿を書いている12月中旬の時点ではまだsystemd対応は終わっていないようなので予定通りリリースされるかは不明です。しかし1.0リリースの時の追い込み具合を考えると,すごいスピードでコードがマージされて予定通りリリースされることも十分考えられます。

LXCはUbuntuの開発者がメインで開発されていますので,これまではまずUbuntu上で動作することを確認してから,Fedoraなどのsystemdを採用したディストリビューションでの問題をつぶしていくという開発の進み方になってしまっていました。しかし今後はUbuntuではsystemdへの移行が行われるということで,ここできちんとsystemdへの対応を行っていこうということだと思います。

今後はこれまでのようなタイムラグはなく,新しいリリースのLXCをsystemd採用のディストリビューションでも利用できるようになるはずです。色々なディストリビューションで新しいバージョンのLXCがすぐに安定して使えるようになっていくでしょうから,LXCが使いやすくなりますね。

LXD

前述のようにこれまでLXCはLinuxカーネルに実装されている機能をフルに使って,コンテナ環境をきちんと動作させるという点に注力してきました。そのためどうしても具体的な開発や運用のさまざまな問題に対応していく機能をスピーディーに実装していくDockerに比べると話題性という点では劣っていた気がします。

しかし,コンテナ環境の実現という点で完成度が上がったところで,LXC周辺でも動きが出てきました。それがLXDです。

LXDはLXCの置き換えではなく,liblxcを使ったLXCコンテナを管理していくための仕組みです。liblxcのGoバインディングを使って開発されています。

LXDは

  • REST APIを提供するデーモン
  • コマンドラインクライアント
  • OpenStack Novaプラグイン

から成ります。

これにより,ホスト上のローカルな環境のコンテナを扱うだけでなく,ネットワーク越しのコンテナホストとコンテナの管理が行えるようになり,さらにはコンテナホストがOpenStackのコンピュートノードとして使えるようにもなりますので,コンテナを使ったプラットフォームの構築の可能性が大きく広がるでしょう。

前述のCheckpoint/Restoreにも対応してライブマイグレーションができるようになるようです。

またLXCはテンプレートを使って手元でコンテナイメージを構築するという印象が強かったのに対し,LXDではDockerのようにイメージの使用を前提とする環境になるようです。

これまでLXCはコンテナを作成して起動させるだけでした。LXCを使ったLXDというプロダクトの開発が始まったのは,LXCがある程度の完成度に達し,より具体的なソリューションを行うプラットフォームの1つのパーツとして使われていく準備が整ったということだと思います。

11月はじめに発表された時点では,ドキュメントだけでコードは存在しない状態でした。その後開発が進み,原稿執筆時点の12月中旬ではかなりの機能が実装されており,とりあえず試してみることはできるようになっています。

メーリングリストへのパッチ投稿を中心とした開発のLXCに比べて,LXDはGithubへのプルリクエストを中心とした開発でスピード感があります。2015年に入ってもかなりのスピードで機能の実装が進むのではないでしょうか。

LXDにより,LXCコンテナを大規模にデプロイするような環境を構築しやすくなります。このような場面では一歩先を行っているDockerに少し近づく基盤ができつつあります。

2015年は複数のコンテナが連係する環境を構築する場合,候補としてDocker以外にもLXC/LXDが検討できるようになっていくのではないでしょうか。選択肢が増えることで検討の余地が広がるのは良いことですね。LXDによってLXCにも大きな飛躍のチャンスが来たように思います。

LXCFS

以上のようにLXDはLXCを使ったプラットフォーム構築や運用を解決していくためのソリューションです。それに対してLXCを使ったコンテナ環境内部の運用環境を改善していくためのツールとしてLXCFSというFUSEを使ったファイルシステムの開発が始まりました。

Linuxのコンテナでは/proc以下は最低限の仮想化はなされているものの,cpuinfoやmeminfoなどのリソース情報についてはホストOSと同じ内容が見えており,たとえばfreeコマンドのような一般的にサーバ管理の際に使用するようなコマンドを使うとコンテナのリソース消費の状態でなく,ホストOS全体の状態が見えていました。

これを解決するためにcgroupから情報を取得してコンテナに提供するなどの機能を持ったLXCFSの開発が始まりました。他にも非特権コンテナ上でcgroupfsを使えるようにする機能が実装されるようです。

LXCFSは12月の中旬に開発が始まりました。おそらくLXC 1.1でのsystemd対応と合わせて,systemd環境での非特権コンテナを動かすためのパーツの1つとして考えられているようなので,しばらく急速に開発が進み,とりあえず動くものが2015年早々にも登場するかもしれません。

まとめ

2014年はLinuxカーネルに標準で実装された機能だけでコンテナ環境が安定して動く環境が整った年でした。コンテナの利用が進むにつれ,コンテナの適用や実際の運用の場面でまだ足りない機能が続々と洗い出されてきている状況だと思います。

それがより洗い出され,2015年はコンテナを運用していく上での色々な解決するための実装がより進み,コンテナを利用する環境がより整っていくでしょう。

それに伴い,コンテナを使った面白いプロダクトやサービスが2014年以上にたくさん出てきそうで楽しみです。今年もコンテナから目が離せませんね。

著者プロフィール

加藤泰文(かとうやすふみ)

2009年頃にLinuxカーネルのcgroup機能に興味を持って以来,Linuxのコンテナ関連の最新情報を追っかけたり,コンテナの勉強会を開いたりして勉強しています。英語力のない自分用にLXCのmanページを日本語訳していたところ,あっさり本家にマージされてしまい,それ以来日本語訳のパッチを送り続けています。

Plamo Linuxメンテナ。ファーストサーバ株式会社所属。

Twitter:@ten_forward
技術系のブログ:http://d.hatena.ne.jp/defiant/

バックナンバー

新春特別企画

バックナンバー一覧

コメント

コメントの記入