LXDをインストールするには#
LXDをインストールする最も簡単な方法は提供されているパッケージのどれかをインストールすることですが、ソースからLXDをインストールすることもできます。
LXDのインストール後、lxd
グループがシステム内に存在することを確認してください。
このグループ内のユーザがLXDを操作できます。
手順はLXDへのアクセスを管理するを参照してください。
リリースを選択する#
LXDは異なるリリースブランチを並行して維持しています。
長期サポート(LTS)リリース:現在は LXD 5.0.x と LXD 4.0.x
機能リリース:LXD 5.x
本番環境にはLTSを推奨します。通常のバグフィクスとセキュリティアップデートの恩恵を受けられるからです。 しかし、長期リリースには新しい機能はやどんな種類の挙動の変更も追加されません。
LXDの最新の機能と毎月の更新を得るには、代わりに機能リリースを使ってください。
LXDをパッケージからインストールする#
LXDデーモンはLinuxでのみ稼働します。
クライアントツール(lxc
)はほとんどのプラットフォームで利用できます。
Linux#
LXDをインストールする最も簡単な方法はSnapパッケージをインストールすることです。これはさまざまなLinuxディストリビューションで利用可能です。
この選択肢が使えない場合、他のインストール方法を参照してください。
Snapパッケージ#
LXDはいくつかのLinuxディストリビューション(例えば、Ubuntu、Arch Linux、Debian、Fedora、そしてOpenSUSE)で動作するsnapパッケージを公開しテストしています。
snapをインストールするには以下の手順を実行してください。
提供されているディストリビューション一覧を見て、お使いのLinuxディストリビューションで利用可能かを確認してください。 利用可能ではない場合、他のインストール方法のいずれかで対応してください。
snapd
をインストールします。 Snapcraftドキュメントインストール手順を参照してください。snapパッケージをインストールします。 最新の機能リリースをインストールするには以下のようにします。
sudo snap install lxd
LXD 5.0 LTS リリースの場合は以下のようにします。
sudo snap install lxd --channel=5.0/stable
LXDのsnapパッケージについてより詳細な情報(上記以外のバージョン、更新の管理など)についてはManaging the LXD snapを参照してください。
注釈
Ubuntu 18.04では、もしLXDのdebパッケージを過去にインストールしていた場合、既存の全てのデータを以下のコマンドで移行できます。
sudo lxd.migrate
他のインストール方法#
いくつかのLinuxディストリビューションではsnapパッケージ以外のインストール方法を提供しています。
Alpine Linuxで機能リリースのLXDをインストールするには、以下のようにします。
apk add lxd
Arch Linuxで機能リリースのLXDをインストールするには、以下のようにします。
pacman -S lxd
LXC/LXDのFedora RPMパッケージがCOPR レポジトリで利用可能です。
機能リリースのLXDパッケージをインストールするには、以下のようにします。
dnf copr enable ganto/lxc4
dnf install lxd
インストール手順のより詳細な情報についてはインストールガイドを参照してください。
Gentooで機能リリースのLXDをインストールするには、以下のようにします。
emerge --ask lxd
他のオペレーティングシステム#
重要
他のオペレーティングシステム向けのビルドはクライアントのみを含み、サーバーは含みません。
Windows版のLXDクライアントはChocolateyパッケージとして提供されています。 インストールするためには以下のようにします。
インストール手順に従ってChocolateyをインストールします。
LXDクライアントをインストールします。
choco install lxc
GitHubにもLXDクライアントのネイティブビルドがあります。 特定のビルドをダウンロードするには以下のようにします。
GitHubアカウントにログインします。
興味のあるブランチやタグ(例えば、最新のリリースタグあるいは
master
)でフィルタリングします。最新のビルドを選択し、適切なアーティファクトをダウンロードします。
LXDをソースからインストールする#
LXDをソースコードからビルドとインストールしたい場合、以下の手順に従ってください。
LXDの開発にはliblxc
の最新バージョン(4.0.0以上が必要)を使用することをおすすめします。
さらにLXDが動作するためには Golang 1.18 以上が必要です。
Ubuntu では次のようにインストールできます:
sudo apt update
sudo apt install acl attr autoconf automake dnsmasq-base git golang libacl1-dev libcap-dev liblxc1 liblxc-dev libsqlite3-dev libtool libudev-dev liblz4-dev libuv1-dev make pkg-config rsync squashfs-tools tar tcl xz-utils ebtables
デフォルトのストレージドライバであるdir
ドライバに加えて、LXDではいくつかのストレージドライバが使えます。
これらのツールをインストールすると、initramfsへの追加が行われ、ホストのブートが少しだけ遅くなるかもしれませんが、特定のドライバを使いたい場合には必要です:
sudo apt install lvm2 thin-provisioning-tools
sudo apt install btrfs-progs
テストスイートを実行するには、次のパッケージも必要です:
sudo apt install curl gettext jq sqlite3 socat bind9-dnsutils
ソースから最新版をビルドする#
この方法は LXD の最新版をビルドしたい開発者やLinuxディストリビューションで提供されないLXDの特定のリリースをビルドするためのものです。 Linuxディストリビューションへ統合するためのソースからのビルドはここでは説明しません。 それは将来、別のドキュメントで取り扱うかもしれません。
git clone https://github.com/lxc/lxd
cd lxd
これでLXDの現在の開発ツリーをダウンロードしてソースツリー内に移動します。 その後下記の手順にしたがって実際にLXDをビルド、インストールしてください。
ソースからリリース版をビルドする#
LXD のリリースtarballは完全な依存ツリーとlibraft
とLXDのデータベースのセットアップに使用するlibdqlite
のローカルコピーをバンドルしています。
tar zxvf lxd-4.18.tar.gz
cd lxd-4.18
これでリリースtarballを解凍し、ソースツリー内に移動します。 その後下記の手順にしたがって実際にLXDをビルド、インストールしてください。
ビルドを開始する#
実際のビルドはMakefileの2回の別々の実行により行われます。
1つはmake deps
でこれはLXDに必要とされるライブラリーをビルドします。
もう1つはmake
でLXD自体をビルドします。
make deps
の最後にmake
の実行に必要な環境変数を設定するための手順が表示されます。
新しいバージョンのLXDがリリースされたらこれらの環境変数の設定は変わるかもしれませんので、make deps
の最後に表示された手順を使うようにしてください。
下記の手順(例示のために表示します)はあなたがビルドするLXDのバージョンのものとは一致しないかもしれません。
ビルドには最低2GBのRAMを搭載することを推奨します。
user@host:~$
make deps
...
make[1]: Leaving directory '/root/go/deps/dqlite'
# environment
Please set the following in your environment (possibly ~/.bashrc)
# export CGO_CFLAGS="${CGO_CFLAGS} -I$(go env GOPATH)/deps/dqlite/include/ -I$(go env GOPATH)/deps/raft/include/"
# export CGO_LDFLAGS="${CGO_LDFLAGS} -L$(go env GOPATH)/deps/dqlite/.libs/ -L$(go env GOPATH)/deps/raft/.libs/"
# export LD_LIBRARY_PATH="$(go env GOPATH)/deps/dqlite/.libs/:$(go env GOPATH)/deps/raft/.libs/:${LD_LIBRARY_PATH}"
# export CGO_LDFLAGS_ALLOW="(-Wl,-wrap,pthread_create)|(-Wl,-z,now)"
user@host:~$
make
ソースからのビルド結果のインストール#
ビルドが完了したら、ソースツリーを維持したまま、あなたのお使いのシェルのパスに$(go env GOPATH)/bin
を追加し、LD_LIBRARY_PATH
環境変数をmake deps
で表示された値に設定すれば、 LXD が利用できます。
~/.bashrc
ファイルの場合は以下のようになります。
export PATH="${PATH}:$(go env GOPATH)/bin"
export LD_LIBRARY_PATH="$(go env GOPATH)/deps/dqlite/.libs/:$(go env GOPATH)/deps/raft/.libs/:${LD_LIBRARY_PATH}"
これでlxd
とlxc
コマンドの実行ファイルが利用可能になりLXDをセットアップするのに使用できます。
LD_LIBRARY_PATH
環境変数のおかげで実行ファイルは$(go env GOPATH)/deps
にビルドされた依存ライブラリーを自動的に見つけて使用します。
マシンセットアップ#
LXDが非特権コンテナを作成できるように、rootユーザーに対するsub{u,g}idの設定が必要です。
echo "root:1000000:1000000000" | sudo tee -a /etc/subuid /etc/subgid
これでデーモンを実行できます(sudo
グループに属する全員がLXDとやりとりできるように --group sudo
を指定します。別に指定したいグループを作ることもできます)。
sudo -E PATH=${PATH} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} $(go env GOPATH)/bin/lxd --group sudo
注釈
newuidmap/newgidmap
ツールがシステムに存在し、/etc/subuid
、/etc/subgid
が存在する場合は、rootユーザーに少なくとも10MのUID/GIDの連続した範囲を許可するように設定する必要があります。
LXDへのアクセスを管理する#
LXDのアクセス制御はグループのメンバーシップに基づいています。
rootユーザとlxd
グループの全てのメンバーはローカルデーモンとやりとりできます。
詳細はLXDデーモンへのアクセスを参照してください。
お使いのシステムにlxd
グループが存在しない場合は、作成してLXDデーモンを再起動してください。
このグループに追加されたメンバーはLXDの完全な制御ができます。
グループのメンバーシップは通常ログイン時にのみ適用されますので、セッションを開き直すか、LXDとやりとりするシェル上でnewgrp lxd
コマンドを実行する必要があります。
重要
UNIXソケットを介したLXDへのローカルアクセスは、常にLXDへのフルアクセスを許可します。 これは、任意のインスタンス上のセキュリティ機能を変更できる能力に加えて、任意のインスタンスにファイルシステムパスやデバイスをアタッチする能力を含みます。
したがって、あなたのシステムへのルートアクセスを信頼できるユーザーにのみ、このようなアクセスを与えるべきです。
LXDをアップグレードする#
LXDを新しいバージョンにアップグレードした後、LXDはデータベースを新しいスキーマにアップデートする必要があるかもしれません。
このアップデートはLXDのアップグレードの後のデーモン起動時に自動的に実行されます。
アップデート前のデータベースのバックアップはアクティブなデータベースと同じ場所(例えばsnap の場合は/var/snap/lxd/common/lxd/database
)に保存されます。
重要
スキーマのアップデート後は、古いバージョンのLXDはデータベースを無効とみなすかもしれません。 これはつまりLXDをダウングレードしてもあなたのLXDの環境は利用不可能と言われるかもしれないということです。
このようなダウングレードが必要な場合は、ダウングレードを行う前にデータベースのバックアップをリストアしてください。