web-dev-qa-db-fra.com

Les conteneurs lxc ne parviennent pas à démarrer automatiquement en 14.04, ils utilisent "lxc.start.auto = 1"

En confiance, les conteneurs 14.04 ne parviennent pas à démarrer automatiquement malgré le paramétrage requis par 14.04. Ils montrent tous comme ARRÊTÉS

J'ai correctement configuré 2 conteneurs LXC:

calypso  
encelado

Ils courent parfaitement si je cours
Sudo lxc-autostart

puis
Sudo lxc-ls --fancy résulte en:

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 

Le problème est d'essayer de les exécuter au démarrage.

J'ai à: /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

et j'ai LXC_AUTO="false" comme requis à l'intérieur de /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

Une idée sur pourquoi les conteneurs ne commencent pas au démarrage? Au redémarrage, ils sont toujours à l'état STOPPED:

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

et encore une fois ils peuvent être démarrés manuellement, en utilisant Sudo lxc-autostart

5
user273046

Vous dites:

J'ai LXC_AUTO = "false" comme requis dans/etc/default/lxc

Cela indique spécifiquement au travail parvenu NE PAS démarrer un conteneur. Il suffit de ne pas le définir ou de le définir sur true et vous remarquerez que les conteneurs commencent au moment du démarrage.

7
stgraber

En plus de ce que Manwe a posté (ce que j’ai trouvé correct), j’ai dû faire un travail supplémentaire car j’utilise l’option -P sur toutes mes commandes lxc pour utiliser un chemin personnalisé lxc différent de /var/lib/lxc. (Rétrospectivement, si je faisais cela à nouveau, je resterais probablement avec l'emplacement par défaut, mais ce n'est ni ici ni là.)

Éditez /etc/default/lxc et ajoutez à la fin:

OPTIONS="-P <lxcpath>"

Éditez /etc/init/lxc-instance.conf et ajoutez

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

pour démarrer pre-start et script et ajouter $OPTIONS après lxc-wait et lxc-start.

Ainsi:

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

Ensuite, il peut être testé avec:

Sudo service lxc restart
Sudo lxc-ls -P <lxcpath> --fancy
4
acker9

Vérifiez que LXC_AUTO est vrai dans /etc/default/lxc

LXC_AUTO="true"

et ajouter un paramètre de groupe à votre configuration

lxc.group = onboot

(ou ajoutez BOOTGROUPS= avec votre configuration à /etc/default/lxc)

Je pense que le guide actuel Ubuntus à l'adresse buntu lxc indique à tort que LXC_AUTO devrait être false. Ignorez également /etc/default/lxc l'exigence de lien symbolique.

4
Manwe