无法自动启动使用 LXD 创建的 LXC 容器

mad*_*oet 5 lxc 15.04

我已经使用 LXD 工具轻松创建了一个 lxc 容器,但是我找不到在重新启动时自动启动它的方法。(Ubuntu 15.04)

对于 LXC,据说添加lxc.start.auto = 1到容器配置就足够了,但是我找不到使用 LXD 创建的容器的配置文件。我试过

lxc config set my_machine raw.lxc "lxc.start.auto=1"
Run Code Online (Sandbox Code Playgroud)

没有任何运气。配置已保存,但容器未启动...有任何想法吗?

小智 6

几个月后,lxd 本身支持自动启动(现在有一段时间了)。你可以

lxc init ubuntu u1
lxc config set u1 boot.autostart true
Run Code Online (Sandbox Code Playgroud)

现在 u1 将在每次重新启动时自动启动。


mad*_*oet 0

我询问了 lxc/lxd 开发人员本身,如果使用 lxd 创建容器,则似乎无法通过配置来完成此操作。尚未实施,但他们说已计划......

lxd 与 lxc 脚本有些不同:即容器的默认目录是/var/lib/lxd/lxc/而不是/var/lib/lxc/,容器配置保存在中央 sqlite 数据库中,而不是每个容器的某些配置文件中。

所以我必须通过创建文件来创建一个 systemd 作业:/etc/systemd/system/multi-user.target.wants/lxd-autostart.service内容如下:

[Unit]
Description=Start lxc containers created with lxd
After=lxd.service
Requires=lxd.service

[Service]
ExecStartPre=/usr/local/bin/lxd-autostart-check.sh
ExecStart=/usr/bin/lxc start my_machine
Restart=on-failure

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

并且/usr/local/bin/lxd-autostart-check.sh是:

#!/bin/bash

for i in {1..10}
do
    echo "."
    [ -S /var/lib/lxd/unix.socket ] && exit 0
    sleep 1
done

echo "/var/lib/lxd/unix.socket not detected!"
exit 1
Run Code Online (Sandbox Code Playgroud)