lost and found ( for me ? )

LXD : launch systemd based containers on non systemd based LXD host( Ubuntu 14.04)

Reference
https://github.com/lxc/lxcfs

LXD host
$ tail -1 /etc/lsb-release
DISTRIB_DESCRIPTION="Ubuntu 14.04.4 LTS"

install lxcfs
$ cat /etc/apt/sources.list.d/lxcfs.list
deb http://ppa.launchpad.net/ubuntu-lxc/lxcfs-stable/ubuntu trusty main
deb-src http://ppa.launchpad.net/ubuntu-lxc/lxcfs-stable/ubuntu trusty main

$ sudo apt-get update

$ sudo apt-get install lxcfs

$ ls /var/lib/lxcfs/
cgroup  proc

$ ps aux | grep lxcfs | grep -v grep
root      2662  0.0  0.0 382476  1952 ?        Ssl   8月29   3:43 /usr/bin/lxcfs /var/lib/lxcfs

Launch an instance ( Ubuntu 16.04 )
can’t use systemctl..
$ lxc launch ubuntu:16.04 test01 -e
Creating test01
Retrieving image: 100%
Starting test01

$ lxc exec test01 -- /bin/bash

root@test01:~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"

root@test01:~# systemctl reboot
Failed to connect to bus: No such file or directory
Failed to connect to bus: No such file or directory
Failed to connect to bus: No such file or directory

stop the container.
$ lxc stop test01 --force

edit /etc/lxc/default.conf
add the followings.
# add for systemd based containers
lxc.mount.auto = cgroup:mixed
lxc.autodev = 1
lxc.kmsg = 0
lxc.include = /usr/share/lxc/config/common.conf.d/00-lxcfs.conf

$ lxc launch 419af7170d66 -e test01

$ lxc exec test01 -- systemctl
Failed to connect to bus: No such file or directory

$ lxc stop test01 --force

restart lxd
$ sudo /etc/init.d/lxd restart

still can’t use systemclt.
$ sudo lxc launch 419af7170d66 test01 -e

$ lxc exec test01 -- systemctl
Failed to connect to bus: No such file or directory

$ lxc stop test01 --force

create a config file for this container.
# vi /var/lib/lxd/containers/test01/config

# cat /var/lib/lxd/containers/test01/config
lxc.mount.auto = cgroup:mixed
lxc.autodev = 1
lxc.kmsg = 0
lxc.include = /usr/share/lxc/config/common.conf.d/00-lxcfs.conf

start the container
$ lxc start test01

I was able to use systemctl ☺
$ lxc exec test01 -- systemctl
 UNIT                                    LOAD   ACTIVE     SUB       DESCRIPTION
 dev-sda1.device                         loaded activating tentative dev-sda1.device
 -.mount                                 loaded active     mounted   /
 dev-.lxd\x2dmounts.mount                loaded active     mounted   /dev/.lxd-mounts

$ lxc stop test01

$ lxc list test01
+--------+---------+------+------+------------+-----------+
|  NAME  |  STATE  | IPV4 | IPV6 |    TYPE    | SNAPSHOTS |
+--------+---------+------+------+------------+-----------+
| test01 | STOPPED |      |      | PERSISTENT | 0         |
+--------+---------+------+------+------------+-----------+

CentOS7 container.
$ lxc init images:centos/7/amd64 test02

$ cat /var/lib/lxd/containers/test02/config
lxc.mount.auto = cgroup:mixed
lxc.autodev = 1
lxc.kmsg = 0
lxc.include = /usr/share/lxc/config/common.conf.d/00-lxcfs.conf

$ lxc start test02

$ lxc exec test02 -- cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core)

$ lxc exec test02 -- systemctl
 UNIT                                   LOAD   ACTIVE SUB       DESCRIPTION
 -.mount                                loaded active mounted   /
 dev-.lxd\x2dmounts.mount               loaded active mounted   /dev/.lxd-mounts