Containers)の充実でした。11.04の頃から本格的にサポートを開始したLXCは,かんたんに軽量な仮想環境を作成できるとあって,アプリケーションのテスト環境やJujuのようなクラウドマシンの生成ツールでも使われています。今回のリリースでは,x86マシン上でARMの実行環境を生成できるようになりました。そこで今回は,UbuntuにおけるLXCの基本的な使い方を紹介します。GroupやNamespaceという機能を使って,ホストOSとは隔離された環境を作るツールです。LXCのパッケージにはテンプレートという形で各OSの最小構成のrootfs環境を作るスクリプトも付属しているため,VirutalBoxやXenのようにコマンドラインから簡単に仮想環境を作成できます。実態はただのchroot環境なので,KVMのようなハードウェアによる支援機構は必要なく,カーネルをそのまま使うため高速に起動や終了が動作することも特徴です。そのため,VPSやAWS上でも手軽に仮想環境を作成できます。2012年5月号で紹介しているJujuもLXCを使ったテスト環境の構築をサポートしています。Linuxカーネルの機能を使っているため,ホストもゲストもLinuxで,さらに同じカーネル上で動作することになります。LXCを使うには,lxcパッケージをインストールするだけです。LXCのチュートリアルで説明されることのあるcgroupの作成・マウントやブリッジインターフェースの作成などの環境構築は,パッケージ側でやってくれるのでインストールしたらすぐにLXCを使い始めることができます。lxcUbuntu環境を作る仮想環境を作るにはlxc-createを作ります(注1⁠)⁠。ホストOSと同じ環境を作るには以下のコマンドを入力します。ubuntu"はテンプレート名です。「⁠/usr/lib/lxc/templates/lxc-テンプレート名」というファイルを参照します。中身を見ていただければわかるのですが,このテンプレートは実際に環境を作るためのシェルスクリプトになっています。このため,このシェルスクリプトをいじれば自由に好みの環境を作れます。precise"は作成した環境の名前を設定しています。今後はこの名前を指定することで,LXCの起動・終了・削除を行います。lxc-list」コマンドで取得できます。作成時にテンプレートにオプションを渡したい場合は,ハイフンを2つ連続してつけたあとに渡したいオプションを記述します。Ubuntuの場合,標準状態ではホストと同じリリースの環境を作成しますが,もし特定のリリース(例えばoneiric)の環境を作成したい場合は,次のように"-r"オプションをテンプレートに渡す必要があります。oneiriclxc-createは必要なパッケージをダウンロードして,環境を構築するため若干時間がかかります。環境が構築できたら,lxc-startコマンドでその環境を立ち上げましょう。precise端末にシリアルコンソールのログが表示され,すぐにログインプロンプトが現れるはずです。初期設定では「ログイン名:ubuntu,パスワード:ubuntu」でログインできます。NAT接続になっているので,ゲストからのインターネット接続も特に問題なく行えます。よって,起動後に追加のパッケージをインストールすることで,ホストと独立した環境を構築できます。Ubuntuテンプレートの場合,最初からopenssh-serverがインストールされるため,ホストからsshコマンドでログインするという方法もあります。初期設定ではゲストOSには,10.0.3.0/24のアドレスがDHCPで割り当てられるので,ゲストでIPアドレスを確認した上で,sshによる接続を試してみるとよいでしょう(注2⁠)⁠。コンソールの出力を抑制したい場合は"-d"オプションをつけます。次のように"-c"オプションと併用すればコンソールログを特定のファイルに出力できますし,lxc-consoleでいつでもコンソールを取得できます(注3⁠)⁠。/var/lxc-console.log仮想環境をホストからシャットダウンする場合はlxc-shutdownです。preciseどうしても終了しない場合は,lxc-stopで強制終了しましょう。preciseなお,仮想環境は「/var/lib/lxc/仮想環境名」以下に作られます。上記の場合ファイルシステムは「/var/lib/lxc/precise/rootfs」以下に作られるため,ここのファイルを編集することでホストからもゲストの構成を設定可能です。ファイルシステムを含めて完全に削除したい場合は,lxc-destroyコマンドを使います。precise注1今回はシステムコンテナーを使った方法のみ説明します。ホストOSのファイルシステムを使って特定のアプリケーションのみを隔離環境で実行するアプリケーションコンテナーについては,lxcやlxc-executeのmanページを確認してください。ubuntu@precise.local"といった形でログインすることも可能です。Fedora環境を作るLinuxカーネルを使う他のLinuxディストリビューション相当の環境を作ることもできます。LXCパッケージには最初からfedora用のテンプレートがあるので,これを使ってFedora環境を構築できます。環境構築時にYumを使うため,yumパッケージをインストールしておいてください。fedoraFedoraの場合,一般ユーザーのアカウントは作られません。rootとしてパスワードもrootでログインしてください。Ubuntuと同じようにsshで接続したい場合は,さらに次のコマンドをゲストで実行します。startDebian環境を作るDebian環境を作る場合,そのままのテンプレートだといくつか使い勝手が悪いため,次のような修正を行いましょう。前者は-nで指定した値を,lxc.utsnameに指定しています。後者は最初にインストールされるパッケージを移行パッケージになったdhcp3-clientではなく,新しいisc-dhcp-clientに変更します。/usr/lib/lxc/templates/lxc-debiansid環境を作るには次のコマンドを入力します。debianアカウントとパスワードについてはFedoraの時と同じです。