在 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
添加。$OPTIONS
lxc-wait
lxc-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