Raspberry Pi 3 Model B
OS: Raspbian Stretch lite March 2018
RaspbianではaptコマンドでLXDパッケージを導入することができないようであるからSnappyというパッケージマネージャで以ってインストールするのがよいようである。先んじてaptコマンドでlxcとsnapdパッケージをインストールしておく。
$ 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 に追加
これでコンテナの操作がほしいままになった。
参考:
Linux Containers – LXD – オンラインでの試用