Incusをインストールするには

Incus をインストールする最も簡単な方法は利用可能なパッケージの1つをインストールですが、ソースからIncusをインストールも可能です。

Incus をインストールしたら、システム上にincus-adminグループが存在することを確認してください。 このグループのユーザーが Incus を操作できます。 手順はIncusへのアクセスを管理するを参照してください。

リリースを選択する

Incus は同時に複数のリリースブランチをメンテナンスしています。

  • 長期サポート(LTS)リリース:6.0

  • 機能リリース:Incus 0.x

本番環境には LTS を推奨します。通常のバグフィクスとセキュリティーアップデートの恩恵を受けられるからです。 しかし、長期リリースには新しい機能はやどんな種類の挙動の変更も追加されません。

Incus の最新の機能と毎月の更新を得るには、代わりに機能リリースを使ってください。

Incusをパッケージからインストールする

Incus デーモンは Linux でのみ稼働します。 クライアントツール(incus)はほとんどのプラットフォームで利用できます。

Linux

いくつかの Linux ディストリビューションでは、メインレポジトリまたはサードパーティレポジトリでパッケージが利用できます。

Incus と全ての依存ソフトウェアは Alpine Linux のメインレポジトリ内で incus として利用できます。

Incus を以下のコマンドでインストールします:

apk add incus incus-client

仮想マシンを動かす場合は、さらに以下を実行します:

apk add incus-vm

次にサービスを有効化と起動します:

rc-update add incusd
rc-service incusd start

パッケージングの問題はこちらに報告してください。

他のOS

重要

他のOS用のビルドはクライアントのみを含み、サーバは含みません。

IncusはmacOSのIncusクライアントのビルドをHomebrewで公開しています。

機能リリースのIncusをインストールするには、以下のようにします。

brew install incus

GitHubにも Incus クライアントのネイティブビルドがあります:

Incusをソースからインストールする

Incus をソースコードからビルドとインストールしたい場合、以下の手順に従ってください。

Incus の開発にはliblxcの最新バージョン(5.0.0 以上が必要)を使用することをお勧めします。 さらに Incus が動作するためには最近の Go 言語(Go参照)が動作することが必要です。

以下のコマンドで Alpine Linux 上で Incus をビルドするのに必要な開発リソースを取得できます:

apk add acl-dev autoconf automake eudev-dev gettext-dev go intltool libcap-dev libtool libuv-dev linux-headers lz4-dev tcl-dev sqlite-dev lxc-dev make xz

Incus の必要な機能をすべて使えるようにするには、さらにパッケージをインストールする必要があります。 Alpine Linux レポジトリの LXD パッケージの定義 から特有の関数を使う必要のあるパッケージのリストを参照できます。 また Alpine Linux パッケージコンテンツフィルター から実行ファイル名でパッケージを見つけることができます。

メインの依存ソフトウェアをインストールします:

apk add acl attr ca-certificates cgmanager dbus dnsmasq lxc libintl iproute2 iptables netcat-openbsd rsync squashfs-tools shadow-uidmap tar xz

仮想マシンを動かすのに必要な追加の依存ソフトウェアをインストールします:

apk add qemu-system-x86_64 qemu-chardev-spice qemu-hw-usb-redirect qemu-hw-display-virtio-vga qemu-img qemu-ui-spice-core ovmf sgdisk util-linux-misc virtiofsd

リリース tarball あるいは git レポジトリからソースを準備した後、ビルド中の既知のバグを回避するため、以下の手順に従う必要があります:

重要: システムに /usr/local/include が存在しない場合、ビルドエラーが出るかもしれません。 また、gettext の問題のため、以下の追加の環境変数を設定する必要があるかもしれません:

export CGO_LDFLAGS="$CGO_LDFLAGS -L/usr/lib -lintl"
export CGO_CPPFLAGS="-I/usr/include"

ソースから最新版をビルドする

この方法は Incus の最新版をビルドしたい開発者や Linux ディストリビューションで提供されない Incus の特定のリリースをビルドするためのものです。 Linux ディストリビューションへ統合するためのソースからのビルドはここでは説明しません。 それは将来、別のドキュメントで取り扱うかもしれません。

git clone https://github.com/lxc/incus
cd incus

これで Incus の現在の開発ツリーをダウンロードしてソースツリー内に移動します。 その後下記の手順にしたがって実際に Incus をビルド、インストールしてください。

ソースからリリース版をビルドする

Incus のリリース tarball は完全な依存ツリーとlibraftと Incus データベースのセットアップに使用するlibcowsqlのローカルコピーをバンドルしています。

tar zxvf incus-0.1.tar.gz
cd incus-0.1

これでリリース tarball を展開し、ソースツリー内に移動します。 その後下記の手順にしたがって実際に Incus をビルド、インストールしてください。

ビルドを開始する

実際のビルドは Makefile の 2 回の別々の実行により行われます。 一つはmake depsでこれは Incus に必要とされるライブラリをビルドします。 もう一つはmakeで Incus 自体をビルドします。 make depsの最後にmakeの実行に必要な環境変数を設定するための手順が表示されます。 新しいバージョンの Incus がリリースされたらこれらの環境変数の設定は変わるかもしれませんので、make depsの最後に表示された手順を使うようにしてください。 下記の手順(例示のために表示します)はあなたがビルドする Incus のバージョンのものとは一致しないかもしれません。

ビルドには最低 2GiB の RAM を搭載することを推奨します。

user@host:~$ make deps
...make[1]: Leaving directory '/root/go/deps/cowsql'# environment Please set the following in your environment (possibly ~/.bashrc)#  export CGO_CFLAGS="${CGO_CFLAGS} -I$(go env GOPATH)/deps/cowsql/include/ -I$(go env GOPATH)/deps/raft/include/"#  export CGO_LDFLAGS="${CGO_LDFLAGS} -L$(go env GOPATH)/deps/cowsql/.libs/ -L$(go env GOPATH)/deps/raft/.libs/"#  export LD_LIBRARY_PATH="$(go env GOPATH)/deps/cowsql/.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で表示された値に設定します。これは~/.bashrcファイルの場合は以下のようになります。

export PATH="${PATH}:$(go env GOPATH)/bin"
export LD_LIBRARY_PATH="$(go env GOPATH)/deps/cowsql/.libs/:$(go env GOPATH)/deps/raft/.libs/:${LD_LIBRARY_PATH}"

これでincusdincusコマンドの実行ファイルが利用可能になり Incus をセットアップするのに使用できます。 LD_LIBRARY_PATH環境変数のおかげで実行ファイルは$(go env GOPATH)/depsにビルドされた依存ライブラリを自動的に見つけて使用します。

マシンセットアップ

Incus が非特権コンテナを作成できるように、root ユーザーに対する sub{u,g}id の設定が必要です。

echo "root:1000000:1000000000" | sudo tee -a /etc/subuid /etc/subgid

これでデーモンを実行できます(sudoグループに属する全員が Incus とやりとりできるように --group sudo を指定します。別に指定したいグループを作ることもできます)。

sudo -E PATH=${PATH} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} $(go env GOPATH)/bin/incusd --group sudo

注釈

newuidmap/newgidmapツールがシステムに存在し、/etc/subuid/etc/subgidが存在する場合は、rootユーザーに少なくとも10MのUID/GIDの連続した範囲を許可するように設定する必要があります。

Incusへのアクセスを管理する

Incus のアクセス制御はグループのメンバーシップに基づいています。 root ユーザーとincus-adminグループのすべてのメンバーはローカルデーモンとやりとりできます。 詳細はIncus デーモンへのアクセスを参照してください。

お使いのシステムにincus-adminグループが存在しない場合は、作成して Incus デーモンを再起動してください。 このグループに追加されたメンバーは Incus の完全な制御ができます。

グループのメンバーシップは通常ログイン時にのみ適用されますので、セッションを開き直すか、Incus とやりとりするシェル上でnewgrp incus-adminコマンドを実行する必要があります。

重要

UNIXソケットを介したIncusへのローカルアクセスは、常にIncusへのフルアクセスを許可します。 これは、任意のインスタンス上のセキュリティ機能を変更できる能力に加えて、任意のインスタンスにファイルシステムパスやデバイスをアタッチする能力を含みます。

したがって、あなたのシステムへのルートアクセスを信頼できるユーザーにのみ、このようなアクセスを与えるべきです。

Incusをアップグレードする

Incus を新しいバージョンにアップグレードした後、Incus はデータベースを新しいスキーマにアップデートする必要があるかもしれません。 このアップデートは Incus のアップグレードの後のデーモン起動時に自動的に実行されます。 アップデート前のデータベースのバックアップはアクティブなデータベースと同じ場所(/var/lib/incus/database)に保存されます。

重要

スキーマのアップデート後は、古いバージョンのIncusはデータベースを無効とみなすかもしれません。 これはつまりIncusをダウングレードしてもあなたのIncusの環境は利用不可能と言われるかもしれないということです。

このようなダウングレードが必要な場合は、ダウングレードを行う前にデータベースのバックアップをリストアしてください。