lxc 容器无法在 14.04 trusty 中使用“lxc.start.auto = 1”自动启动

lxc 容器无法在 14.04 trusty 中使用“lxc.start.auto = 1”自动启动

在 Trusty 14.04 中,尽管所有设置均按照 14.04 的要求进行设置,但容器仍无法自动启动。它们全部显示为“已停止”

我已经正确配置了2个LXC容器:

calypso  
encelado

如果我跑,它们就会完美地运行
sudo lxc-autostart

结果
sudo lxc-ls --fancy 是:

ubuntu@saturn:/etc/init$ sudo lxc-ls --fancy 
NAME      STATE    IPV4           IPV6  AUTOSTART 

calypso   RUNNING  192.168.1.161  -     YES        
encelado  RUNNING  192.168.1.162  -     YES 

问题在于尝试在启动时运行它们。

我有/var/lib/lxc/calypso/config::

# Template used to create this container: /usr/share/lxc/templates/lxc-download 
# Parameters passed to the template:
# For additional config options, please look at lxc.conf(5)

# Distribution configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.arch = x86_64

# Container specific configuration
lxc.rootfs = /var/lib/lxc/calypso/rootfs 
lxc.utsname = calypso

# Network configuration
lxc.network.type = veth
lxc.network.flags = up
#lxc.network.link = lxcbr0
lxc.network.link = br0
lxc.network.hwaddr = 00:16:3e:64:0b:6e  

# Assign static IP Address
lxc.network.ipv4 = 192.168.1.161/24
lxc.network.ipv4.gateway = 192.168.1.1 

# Autostart
lxc.start.auto = 1
lxc.start.delay = 5
lxc.start.order = 100

并且我已经 LXC_AUTO="false" 按要求做了/etc/default/lxc

LXC_AUTO="false"
USE_LXC_BRIDGE="false"  # overridden in lxc-net
[ -f /etc/default/lxc-net ] && . /etc/default/lxc-net
LXC_SHUTDOWN_TIMEOUT=120

知道为什么容器在启动时无法启动吗?重新启动时,它们始终处于 STOPPED 状态:

ubuntu@saturn:~$ sudo lxc-ls --fancy
NAME      STATE    IPV4  IPV6  AUTOSTART 
calypso   STOPPED  -     -     YES       
encelado  STOPPED  -     -     YES   

然后可以再次手动启动它们,使用sudo lxc-autostart

答案1

你说:

我有 /etc/default/lxc 中要求的 LXC_AUTO="false"

这明确告知 upstart 作业不要启动任何容器。只要不设置它或将其设置为 true,您就会注意到容器在启动时启动。

答案2

检查 LXC_AUTO 是否为真/etc/default/lxc

LXC_AUTO="true"

并将组参数添加到您的配置中

lxc.group = onboot

(或添加BOOTGROUPS=您的设置/etc/default/lxc

我认为目前 Ubuntu 的指南Ubuntu lxc错误地指出LXC_AUTO应该是false。还忽略/etc/default/lxc符号链接要求。

答案3

除了 Manwe 发布的内容(我发现是正确的)之外,我还必须做一些额外的工作,因为我在所有 lxc 命令上都使用 -P 选项来使用不同于 的自定义 lxc 路径/var/lib/lxc。(回想起来,如果我再次这样做,我可能会坚持使用默认位置,但这无关紧要。)

编辑/etc/default/lxc并在最后添加:

OPTIONS="-P <lxcpath>"

编辑/etc/init/lxc-instance.conf和添加

[ -f /etc/default/lxc ] && . /etc/default/lxc

pre-start以和为开头并在和之后script添加。$OPTIONSlxc-waitlxc-start

就像这样:

pre-start script
        [ -f /etc/default/lxc ] && . /etc/default/lxc
        lxc-wait $OPTIONS -s RUNNING -n $NAME -t 0 && { stop; exit 0; } || true
end script

script
        [ -f /etc/default/lxc ] && . /etc/default/lxc
        exec lxc-start $OPTIONS -n $NAME
end script

然后可以使用以下命令进行测试:

sudo service lxc restart
sudo lxc-ls -P <lxcpath> --fancy

相关内容