Ubuntu Weekly Recipe

第521回 入門システムコンテナマネージャーLXD 3.0

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

先日リリースされたUbuntu 18.04 LTSでは,4月にリリースされたばかりのLXD 3.0が導入されました。今回はUbuntu標準のシステムコンテナであるLXDについて,改めて基本的な使い方を説明します。

システムコンテナの管理ツールであるLXD

LXDはCanonical主導のもと開発されているシステムコンテナの管理ツールです。

コンテナ型の仮想環境と言えばDockerが有名ですが,LXDはDockerと同じような技術的要素を用いてはいるものの※1)⁠その目的が異なります。Dockerが特定のアプリケーション・プロセスを動かすための環境を構築することを主目的としたアプリ(プロセス)コンテナであるのに対して,LXDはシステムそのものを提供することが目的なのです。

※1
もっとも重要な名前空間やcgroupなどは,LXCで学ぶコンテナ入門 -軽量仮想化環境を実現する技術がとても参考になります。

LXDは一度インスタンスを構築しログインしたあとは,普通のLinux環境とほぼ同じように使えます。Dockerはよく「Immutable Infrastracture(不変のインフラ)⁠と合わせて語られることが多いですが,LXDで作った環境はMutable(可変)として使われることが一般的です。

つまりLXDはコンテナ技術を利用した,軽量の仮想環境構築ツールとも言えます。その用途を考えるとKVM/libvirtdやVirtualBox,ESXiのLinuxコンテナ版だと思えばいいでしょう。また,第491回でも紹介されているsystemd-nspawnも直接の競合と言えるかもしれません。

Ubuntu 18.04 LTSのリリースにあわせて,LTSリリースとしてLXD 3.0がリリースされました。LXDにはいくつかのリリースブランチが存在します。

  • LXD 2.0.x: 2018年4月以前のLTSブランチ
  • LXD 2.x: 2018年4月以前のフィーチャーブランチ
  • LXD 3.0.x: 最新のLTSブランチ
  • LXD 3.x: 現在のフィーチャーブランチ

16.04に合わせてリリースされた前回のLTSである2.0以降,大きな新機能はフィーチャーブランチである2.xに追加され,2.0.xは不具合の修正のみにとどめられていました。それに対して大きな変更が加えられるフィーチャーブランチ側は原則として毎月リリースされるため,LXD 2.1から2.21を経て3.0になるまで,2年間に22回のリリースを行っています。

LXD 3.0は2.x系で追加された新機能や,ユーザーインターフェースの改善などを取り込んだ集大成となるLTSリリースなのです。2.0に比べて格段に改善されていますので,今からLXDを始めるのであれば3.0をおすすめします。

いくつかの改善ポイントをあげてみましょう※2)⁠

※2
筆者の個人的な趣味に基づいてピックアップしています。変更点一覧はLXDサイトのニュースページを参照してください。
  • ホストとコンテナ間でのGPUパススルーやSR-IOVなどの設定が簡単に
  • storage/networkの設定UIの拡充
  • UID/GIDマッピングをコンテナごとに設定できるように
  • 事前設定ファイルを用いたlxd initの自動化
  • EC2ライクな「インスタンスタイプ」によるリソース制限設定
  • Dockerライクな「ストレージボリューム」機能
  • lxc consoleによるコンソールへのアタッチ
  • 複数のマシン間のLXDのクラスタリング
  • ホスト上のキャラクターデバイス・ブロックデバイスのホットプラグ(コンテナへの自動追加)のサポート
  • ホスト・コンテナ間のネットワーク転送を簡単に実現できるproxyデバイスの追加

なお,Ubuntu 18.04 LTSをインストールもしくは18.04へアップグレードした場合は自動的にLXD 3.0に更新されます。よってLXDのバージョンを2.0系にとどめておきたい場合は,16.04を使い続けてください。

LXDのインストール方法

Ubuntu 18.04 LTSのサーバー版をインストールした場合は,最初からLXD 3.0がインストールされています。デスクトップ版の初期状態の場合は次の方法でインストールしてください。

$ sudo apt install lxd btrfs-progs

btrfs-progsパッケージは,LXDのストレージバックエンドとしてbtrfsを使いたい場合に必要です。他のバックエンドを使う場合は,適宜読み替えてください。

Ubuntu 16.04 LTSの場合,上記コマンドだと2.0系がインストールされます。Backportリポジトリを使うことで2.x系をインストール可能でありますが。まだ3.0にはなっていません。将来的に3.0になる可能性はあります。

(Ubuntu 16.04 LTSで2.0系よりあとのリリースをインストールする方法)
$ sudo apt -t xenial-backports install lxd

18.04/16.04共通の方法としてsnapパッケージ版LXDをインストールする方法もあります。特に常に最新のフィーチャーリリースを追いかけたい場合におすすめの方法です。

snap版はchannelを利用してリリースブランチを指定可能です。

  • latest: 現在のフィーチャーブランチ
  • 2.0: 一つ前のLTSブランチ
  • 3.0: 最新のLTSブランチ
$ sudo snap install lxd                 ←常に最新のフィーチャーリリースに更新される
$ sudo snap install lxd --channel=2.0   ←2.0系の最新LTS版を使用する
$ sudo snap install lxd --channel=3.0   ←3.0系の最新LTS版を使用する

ちなみにLXDの管理コマンドであるlxcコマンドを管理者権限なしに実行したい場合は,lxdグループに所属する必要があります。

Ubuntuサーバーをインストールした場合は,インストール時に作成したアカウントは自動的にlxdグループに所属します。あとからLXDをインストールした場合は,インストール時にsudoグループに所属しているユーザーのみがlxdグループに追加されます。

上記に該当しないユーザーを管理者権限なしにLXDの操作をしたい場合は,個別にグループへの追加を行ってください。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入