インスタンスを作成するには

インスタンスを作成するには、incus initincus launchをコマンドを使用できます。 incus initはインスタンスを作成するだけですが、incus launchは作成して起動します。

使い方

コンテナを作成するには以下のコマンドを入力します:

incus launch|init <image_server>:<image_name> <instance_name> [flags]
イメージ

イメージは必要最小限のオペレーティングシステム(たとえば、Linux ディストリビューション)と Incus 関連の情報を含みます。 さまざまなオペレーティングシステムのイメージがビルトインのリモートイメージサーバーで利用できます。 詳細は Images を参照してください。

イメージがローカルにない場合、イメージサーバーとイメージの名前を指定(たとえば、Debian 12イメージなら images:debian/12)する必要があります。

インスタンス名

インスタンス名は Incus の運用環境(そしてクラスタ内)でユニークである必要があります。 追加の要件については インスタンスプロパティ を参照してください。

フラグ

フラグの完全なリストについては incus launch --helpincus init --help を参照してください。 よく使うフラグは以下のとおりです。

  • --config は新しいインスタンスの設定オプションを指定します

  • --device はプロファイルを通して提供されるデバイスの デバイスオプション を上書き、あるいは ルートディスクデバイスの初期設定 を指定します。

  • --profile は新しいインスタンスに使用する プロファイル を指定します

  • --network--storage は新しいインスタンスに指定のネットワークやストレージプールを使用させます

  • --target は指定のクラスタメンバー上にインスタンスを作成します

  • --vm はコンテナではなく仮想マシンを作成します

設定ファイルを渡す

インスタンス設定をフラグとして指定する代わりに、YAML ファイルでコマンドに渡すことができます。

たとえば、config.yaml の設定でコンテナを起動するには、以下のコマンドを入力します:

incus launch images:debian/12 debian-config < config.yaml

Tip

YAML ファイルの必要な文法を見るには既存のインスタンス設定の中身を確認(incus config show <instance_name> --expanded)してください。

以下の例では incus launch を使用しますが、同じように incus init も使用できます。

システムコンテナを起動する

images サーバーの Debian 12 のイメージで debian-container というインスタンス名でシステムコンテナを起動するには、以下のコマンドを入力します:

incus launch images:debian/12 debian-container

アプリケーションコンテナを起動する

アプリケーション(OCI)コンテナを起動するには、まずOCI互換イメージレジストリーを追加する必要があります。 手順はリモートイメージを使用するにはを参照してください。

次にレジストリに含まれるイメージの1つからコンテナを起動します:

incus launch oci-docker:hello-world --ephemeral --console

仮想マシンを起動する

images サーバーの Debian 12 のイメージで debian-vm というインスタンス名で仮想マシンを起動するには、以下のコマンドを入力します:

incus launch images:debian/12 debian-vm --vm

より大きいディスクサイズで起動する場合は:

incus launch images:debian/12 debian-vm-big --vm --device root,size=30GiB

コンテナを指定の設定で起動する

コンテナを起動しリソースを 1 つの vCPU と 192MiB の RAM に限定するには、以下のコマンドを入力します:

incus launch images:debian/12 debian-limited --config limits.cpu=1 --config limits.memory=192MiB

指定のクラスタメンバー上で仮想マシンを起動する

クラスタメンバー server2 上で仮想マシンを起動するには、以下のコマンドを入力します:

incus launch images:debian/12 debian-container --vm --target server2

指定のインスタンスタイプでコンテナを起動する

Incus ではクラウドのシンプルなインスタンスタイプが使えます。これは、インスタンスの作成時に指定できる文字列で表されます。

以下の 3 つの指定方法があります:

  • <instance type>

  • <cloud>:<instance type>

  • c<CPU>-m<RAM in GiB>

たとえば、次の 3 つのインスタンスタイプは同じです:

  • t2.micro

  • aws:t2.micro

  • c1-m1

コマンドラインでは、インスタンスタイプは次のように指定します:

incus launch images:debian/12 my-instance --type t2.micro

使えるクラウドとインスタンスタイプのリストは https://github.com/dustinkirkland/instance-type で確認できます。

ISOからブートする仮想マシンを起動する

注釈

Windows、macOS、FreeBSDの仮想マシンを作成する際は、image.osプロパティをそれぞれWindowsmacOSFreeBSDから始まる値に確実に設定してください。 そうすることでIncusが仮想マシン内で正しいOSが稼働することを想定し挙動を適切に調整します。

これは特に以下のことをもたらします:

  • Windowsでは

    • いくつかの非サポートの仮想デバイスを無効化します

    • RTCクロックをUTCではなくシステムローカルタイムに基づかせます

    • Intel IOMMUコントローラへ切り替えるようにIOMMUをハンドリングします

  • FreeBSDでは

    • メモリーホットプラグは無効です

ISO からブートする仮想マシンを起動するには、まず仮想マシンを作成する必要があります。 ISO イメージから仮想マシンを作成しインストールしたいとしましょう。 このシナリオでは、まず以下のコマンドで空の仮想マシンを作成します:

incus init iso-vm --empty --vm

注釈

インストールされているオペレーティングシステムの必要に応じて、より多くの CPU、メモリやストレージを仮想マシンに割り当てたいかもしれません。

例えば、2 CPU、4 GiB メモリと 50 GiB のストレージなら、以下のようにします:

incus init iso-vm --empty --vm -c limits.cpu=2 -c limits.memory=4GiB -d root,size=50GiB

次のステップは ISO イメージをインポートし、後で仮想マシンにストレージボリュームとしてアタッチできるようにします:

incus storage volume import <pool> <path-to-image.iso> iso-volume --type=iso

最後に、以下のコマンドでカスタム ISO ボリュームを仮想マシンにアタッチする必要があります:

incus config device add iso-vm iso-volume disk pool=<pool> source=iso-volume boot.priority=10

boot.priority 設定キーは仮想マシンの起動順が確実に ISO が最初になるようにします。 仮想マシンを起動し、コンソールに接続してメニューを操作できるようにします:

incus start iso-vm --console

シリアルコンソールでの操作が完了したら、ctrl+a-q を使ってコンソールから切断する必要があります。そして以下のコマンドで VGA コンソールに接続します:

incus console iso-vm --type=vga

これでインストーラが見えるようになります。インストールが終わったら、カスタム ISO ボリュームを切り離す必要があります:

incus storage volume detach <pool> iso-volume iso-vm

これで仮想マシンはリブートでき、リブートするとディスクから起動します。

仮想マシンインスタンスにIncus Agentをインストール

警告

Incusエージェントはホストとゲスト間の通信のためにTLS証明書を使います。 これが正常に動作するためには、ゲストの時刻をホストと十分同期しておく必要があります。

直接のコマンド実行(incus exec)、ファイル転送(incus file)、そして詳細な利用状況のメトリクス(incus info)のような機能を仮想マシンで使うために、Incusではエージェントソフトウェアが提供されています。

imagesの仮想マシンイメージは起動時にこのエージェントをロードするように事前に設定されています。

他の仮想マシンでは、手動でエージェントをインストールすることもできます。

注釈

Incus Agentは現状ではLinux、Windows、macOS、FreeBSDの仮想マシンでのみ利用可能です。

Incusはエージェントを主にマウント名configでリモートの9pファイルシステムとして提供します。 あるいは、diskデバイスをインスタンスに追加しagent:configsourceプロパティとして使うことで仮想CD-ROMドライブからエージェントのファイルを取得することもできます。

incus config device add INSTANCE-NAME agent disk source=agent:config

注釈

毎回の起動時にエージェントを更新し、Incusとやりとりするのに必要な機密情報を取得するためにアクセスされるため、エージェントのCD-ROMドライブはVMに接続したままにしておく必要があります。

Linux上

エージェントをLinuxシステムに9pでインストールするには、仮想マシンにアクセスし、以下のコマンドを実行する必要があります:

mount -t 9p config /mnt
cd /mnt
./install.sh

仮想CD-ROMドライブを使う場合は、代わりに以下のコマンドを使います:

mount /dev/disk/by-label/incus-agent /mnt
cd /mnt
./install.sh

注釈

上記のインストール用のコマンドはすべてrootシェルから実行してください。 これらのコマンドはinitシステムとしてsystemdを使っているLinuxシステムが必要です。

最初の行はリモートのファイルシステムをマウントポイント/mntにマウントします。 次のコマンドはインストールスクリプトinstall.shを実行しIncus Agentをインストールと起動します。

Windows上

Windowsシステムでは、仮想CD-ROMドライブを使う必要があります。 CD-ROMドライブからinstall.ps1ファイルを実行する(ファイルをエクスプローラーまたは端末から実行する)ことでエージェントをサービスとしてインストールできます。 エージェントを自動更新するには、CD-ROMを仮想マシンに接続したままにしてください。

注釈

インストールするために:エージェントをサービスとするには、ローカルの管理者権限が必要です。

更新するには:仮想マシンを再起動すると、CD-ROMは最新版が再度マウントされ、CD-ROMドライブ内のファイルを使ってサービスは自動的に自分自身を更新します。

あるいは、エージェントはターミナルを開いて(d:\がCD-ROMだとして)以下のコマンドを実行すると手動で起動できます:

d:\
.\incus-agent.exe

macOS上

macOSシステムでは、ターミナルをrootユーザーで開いて以下のコマンドを実行することで9pマウントを使って手動でエージェントをインストールできます:

mount_9p config
cd /Volumes/config
./install.sh

警告

AppleのTransparency、Consent、Controlデーモンはエージェントが自動起動するためにshにフルのディスクアクセスを許可することを要求します。 Appleの追加のセキュリティーの制約を緩和することで、システム全体のセキュリティーが弱まることになります。 ただし、UNIXのパーミションがバイパスされてしまうことはありません。 セキュリティーが弱まるのが心配であれば、毎回incus-agentを手動で実行してください。

On FreeBSD

FreeBSDシステムでは、rootで以下のコマンドを実行し9pのマウントを使ってエージェントを手動でインストールできます(このモジュールがロードされていない場合は事前にkldload virtio_p9fsの実行が必要かもしれません):

mount -t p9fs config /mnt
cd /mnt
./install.sh

Incus Agentの設定

デフォルトではIncus Agentはすべての機能が有効です。

環境によっては、VMの所有者が特定の機能を使えないようにしたい場合があります。

これはincus-agent.ymlファイルにより可能です。このファイルは以下の場所にあります:

  • Linuxでは/etc/incus-agent.yml

  • サポート対象のBSDライクなOS(MacOSとFreeBSD)では/usr/local/etc/incus-agent.yml

  • WindowsではC:\Program Files\Incus Agent\incus-agent.yml

ファイルが存在しないか空であれば、すべての機能が有効になります。 ファイルにfeaturesというマップがあれば、個別に有効しない限りすべての機能が無効になります。

サポートされている機能は以下の通りです:

  • guestapiはエージェントがゲスト内で/dev/incus APIを公開するかどうかを制御します

  • execはエージェントを経由してコマンドを実行できるかどうかを制御します

  • filesはファイル転送APIを利用できるかどうかを制御します

  • mountsは共有ディスクデバイスにファイルシステムのマウントをセットアップするかどうかを制御します

  • metricsは詳細なOpenMetricsデータへのアクセスを制御します

  • stateは基本的なOSの状態を示す情報(OSバージョン、ネットワークインターフェースの詳細、…)へのアクセスを制御します

YAMLファイルの例は以下のとおりです:

features:
  guestapi: true
  metrics: true
  state: true