マクスのメモ帳

ブログではキレイなマクスでありたい。Twitterは知らん。

LXDとLXDUI

qemu-kvmでススルーがどうにもうまくいかなかったので、まどろっこしいことはやめて、lxdコンテナだけで管理することにした。

kernelはホストOSと共有だけど、今のところそれで困ることがない。
なので当分はlxdコンテナをkvmのような仮想環境として使用していくことにする。
困ったときにkvm使えばいいや。。。

もう一度Ubuntu Serverをインストール。せっかくなので、snapからlxdを導入してみる。

まずsnapの自動アップデート時間を変更しておく。明け方に1回でいいや。

$ sudo snap set system refresh.timer=4:00-6:00/1

lxdをsnapからインストール。

$ sudo snap install lxd

Ubuntu Server 18.04 LTSには最初からlxdが入っているためmigrateしておく。

$ sudo lxd.migrate
=> Connecting to source server
=> Connecting to destination server
=> Running sanity checks
The source server is empty, no migration needed.

The migration is now complete and your containers should be back online.
Do you want to uninstall the old LXD (yes/no) [default=yes]? yes

All done. You may need to close your current shell and open a new one to have the "lxc" command work.
To migrate your existing client configuration, move ~/.config/lxc to ~/snap/lxd/current/.config/lxc

何も触ってなかったので特にmigrateされなかった。yesにして古いlxdをアンインストール。

LXDを下記のように設定。ストレージプールはdirにする。

$ sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, ceph, dir, lvm, zfs) [default=zfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:

準備完了!

ついでにCanonicalのLivepatchも試してみることにした。まず下記で登録する。

www.ubuntu.com

下記でクライアントをインストールし、有効に。

$ sudo snap install canonical-livepatch
$ sudo canonical-livepatch enable <key>

LXDに良いWeb管理ツールがないか探していたら、LXDUIというものがあった。

github.com

リポジトリにdockerfileがcommitされていたのでdockerコンテナで起動することにした。
いずれは公式(lxdui開発の)からdockerイメージ出してほしいなぁ。もしくはパッケージ管理してほしい。

まずdockerをインストールする。こっちもsnapで入れてみる。

$ sudo snap install docker

使ってて気づいたけど、snapのdockerはやめておいたほうがいい。buildできなかったりvolumeをmountできなかったりと色々動作が不安定だった。
そのような記事もよくあった。通常はdocker公式でのインストール方法のほうが良い。
とりあえず今はまだlxduiを動作させるだけなのでsnapのdockerで進めることにする。

一旦別の環境で公式のdockerをインストールして下記のようにビルド。

$ git clone --depth 1 https://github.com/AdaptiveScale/lxdui -b v2.1.2
$ sudo docker build -t lxdui:2.1.2 lxdui/

dockerコンテナ起動。

$ sudo docker run -d --name lxdui --restart=always -p 15151:15151 -v /var/snap/lxd/common/lxd/unix.socket:/var/snap/lxd/common/lxd/unix.socket lxdui:2.1.2

f:id:ksmksks:20190323224942p:plain

これめちゃくちゃ使いやすそう。

しかし(ubuntuだからなのか?)lxduiのterminalが動かなかった。
issueもあがってた。まぁterminalはあまり使わないと思うので、修正を気長に待ちましょうかね。

github.com