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
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ユーザをログアウトさせ再度ログインするとコンテナの操作が恣になった。