LXDでインスタンスの自動起動を無効にする

今回の内容はLXDを試すでc1インスタンスを作成したままの状態であることを前提にして話を進めます。


LXDを試すで作成しましたインスタンスはホスト側のPCの再起動を行った後に状態(STATE)を確認してみると、RUNNING(起動中)になっています。

下記のコマンドにより確認できます。

$ lxc list
+------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| NAME |  STATE  |         IPV4         |                     IPV6                      |   TYPE    | SNAPSHOTS |
+------+---------+----------------------+-----------------------------------------------+-----------+-----------+
| c1   | RUNNING | 10.148.110.44 (eth0) | fd42:ddb7:4afa:923a:216:3eff:fe28:fa2a (eth0) | CONTAINER | 0         |
+------+---------+----------------------+-----------------------------------------------+-----------+-----------+

今回はホスト側のPCの再起動等を行っても、インスタンスが自動起動しないようにする設定について見ていきます。




最初にc1インスタンスで設定されている内容を確認します。

$ lxc config show c1
architecture: aarch64
config:
  image.architecture: arm64
  image.description: ubuntu 24.04 LTS arm64 (release) (20240423)
  image.label: release
  image.os: ubuntu
  image.release: noble
  image.serial: "20240423"
  image.type: squashfs
  image.version: "24.04"
  volatile.base_image: 33534c9f8ea2994a8d77d1a5de9668f7c086327680391f621dcdf98a9824fb7a
  volatile.cloud-init.instance-id: c3fc3568-5a4f-49ee-9123-3f38b672ba36
  volatile.eth0.host_name: vethc50b1b2e
  volatile.eth0.hwaddr: 00:16:3e:ef:45:5a
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":10000001},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":10000001}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":10000001},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":10000001}]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
  volatile.uuid: 6b9a3e4c-9b7f-4511-b623-176f1c9d35a6
devices: {}
ephemeral: false
profiles:
- default
stateful: false
description: ""

c1インスタンスに自動起動を無効にする設定を追加してみます。

設定の追加は下記のコマンドで設定することになっています。

lxc config set <instance_name> <option_key>=<option_value> <option_key>=<option_value> ...

インスタンスを設定するには - LXD ドキュメント


今回は自動起動のkeyがboot.autostartになりますので、コマンドは

$ lxc config set c1 boot.autostart=false

になります。


bott.autostartを無効にした後に改めてc1インスタンスの設定内容を確認してみますと、

$ lxc config show c1
architecture: aarch64
config:
  boot.autostart: "false"
  image.architecture: arm64
  image.description: ubuntu 24.04 LTS arm64 (release) (20240423)
  image.label: release
  image.os: ubuntu
  image.release: noble
  image.serial: "20240423"
  image.type: squashfs
  image.version: "24.04"
  volatile.base_image: 33534c9f8ea2994a8d77d1a5de9668f7c086327680391f621dcdf98a9824fb7a
  volatile.cloud-init.instance-id: 3ee20200-e548-4161-ab54-1ef97ff3aa33
  volatile.eth0.host_name: vethd557ced5
  volatile.eth0.hwaddr: 00:16:3e:28:fa:2a
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":10000001},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":10000001}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":165536,"Nsid":0,"Maprange":10000001},{"Isuid":false,"Isgid":true,"Hostid":165536,"Nsid":0,"Maprange":10000001}]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
  volatile.uuid: ac481fd3-5dbc-4391-8f27-d781e9b935e4
devices: {}
ephemeral: false
profiles:
- default
stateful: false
description: ""

configの箇所にboot.autostart: "false"が挿入されていました。


ホスト側のPCの再起動を行った後、ターミナル(LXTerminal)を開き、c1の状態を確認してみますと、

$ lxc list
+------+---------+------+------+-----------+-----------+
| NAME |  STATE  | IPV4 | IPV6 |   TYPE    | SNAPSHOTS |
+------+---------+------+------+-----------+-----------+
| c1   | STOPPED |      |      | CONTAINER | 0         |
+------+---------+------+------+-----------+-----------+

STATEがSTOPPED(停止中)になっていました。




これから作成するすべてのインスタンスすべてで自動起動を無効にしたい場合、毎回インスタンス作成後に自動起動の設定を追加するのは大変ですので、profileを操作して、常に自動起動が無効化されているインスタンスを作成できるようにします。


$ lxc profile edit default
config:
  boot.autostart: "false"
description: Default LXD profile
devices:
  eth0:
    name: eth0
    network: lxdbr0
    type: nic
  root:
    path: /
    pool: default
    type: disk
name: default
used_by:
- /1.0/instances/c1

defaultのprofileを開き、configの下にboot.autostart: "false"を追加します。

これでインスタンス作成時にdefaultプロフィールを参照するインスタンスはすべて自動起動が無効化されるようになりました。


試しに、c2インスタンスを作成してみます。

$ lxc launch ubuntu:24.04 c2

c2インスタンス作成後にSTATEを確認してみますと、

$ lxc list
+------+---------+------+------+-----------+-----------+
| NAME |  STATE  | IPV4 | IPV6 |   TYPE    | SNAPSHOTS |
+------+---------+------+------+-----------+-----------+
| c1   | STOPPED |      |      | CONTAINER | 0         |
+------+---------+------+------+-----------+-----------+
| c2   | STOPPED |      |      | CONTAINER | 0         |
+------+---------+------+------+-----------+-----------+

STATEがSTOPPED(停止中)になっていました。


ホスト側のPCの再起動を行った後、ターミナル(LXTerminal)を開き、c2の状態を確認してみますと、

$ lxc list
+------+---------+------+------+-----------+-----------+
| NAME |  STATE  | IPV4 | IPV6 |   TYPE    | SNAPSHOTS |
+------+---------+------+------+-----------+-----------+
| c1   | STOPPED |      |      | CONTAINER | 0         |
+------+---------+------+------+-----------+-----------+

同様にSTATEがSTOPPED(停止中)になっていました。

マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。