RaspbianにLXDを導入する

Raspberry Pi 3 Model B
OS: Raspbian Stretch lite March 2018
LXD 3.0.0

RaspbianではaptコマンドからLXDパッケージの導入はできず、Snappyというパッケージマネージャで以ってインストールする必要があるようである。先んじてaptコマンドでlxcとsnapdパッケージをインストールし、次いでsnapコマンドからlxdをインストールする。

$ sudo apt install lxc snapd
$ sudo snap install lxd

$ snap list
Name  Version    Rev   Tracking  Developer  Notes
lxd   3.0.0      6661  stable    canonical  devmode
図1. snapコマンドによってlxdをインストールする様子

lxdコマンドは/snap/binとかいう見慣れないパスに配置されるようである。パスを通すぞと息巻いていたらすでに開通済みであり拍子抜けした。どうやら/etc/profile.d/apps-bin-path.shがこの役割を担っている模様である。

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/snap/bin

$ cat /etc/profile.d/apps-bin-path.sh
# Expand the $PATH to include /snap/bin which is what snappy applications
# use
PATH=$PATH:/snap/bin

然し乍らsudoを伴って実行する際には/etc/sudoersにあるsecure_pathの影響が及ぶからこのままでは「sudo: lxd: コマンドが見つかりません」と出て終いである。そうであるからsecure_pathにも/snap/binを追加する。

$ sudo visudo
#Defaults       secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

そうしたらsudo lxd initで初期設定をおこなう。クラスタリングモードで実行するか否かやストレージについてなど、様々な問いかけがあるけれどもひとまずはすべてデフォルトのまま通した。

$ sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
(snip)

初期設定を終えコンテナの操作をしようと試みたところこうである。ソケットファイルへの接続が許されていない模様である。そこでパーミッションを確認してみると、rootユーザとlxdグループにのみ読み書きが許されていた。

$ lxc list
If this is your first time running LXD on this machine, you should also run: lxd init
To start your first container, try: lxc launch ubuntu:16.04
Error: Get http://unix.socket/1.0: dial unix /var/snap/lxd/common/lxd/unix.socket: connect: permission denied

$ sudo ls -l /var/snap/lxd/common/lxd/unix.socket
srw-rw---- 1 root lxd 0  4月 11 21:50 /var/snap/lxd/common/lxd/unix.socket

このままではpiユーザがたいへん困るのでlxdグループに参加するとよい。

$ sudo gpasswd -a pi lxd
ユーザ pi をグループ lxd に追加

一旦piユーザをログアウトさせ再度ログインするとコンテナの操作が恣になった。

図2. lxcコマンドによる操作

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください