Size: 15885
Comment: [[LXC/SimpleBridge]] to [[fr/LXC/SimpleBridge|LXC/SimpleBridge]]
|
Size: 15899
Comment: change [[LXC/LibVirtDefaultNetwork]] to [[fr/LXC/LibVirtDefaultNetwork|LXC/LibVirtDefaultNetwork]]
|
Deletions are marked like this. | Additions are marked like this. |
Line 158: | Line 158: |
* Créer d'un bridge (pont) sur l'hôte (NAT/Routé), [[fr/LXC/SimpleBridge|LXC/SimpleBridge]] * Description de la configuration VLAN + bridge, voir [[LXC/VlanNetworking]] ''(en Anglais)'' * Utiliser le paquet libvirt pour une configuration facile du réseau ([[LXC/LibVirtDefaultNetwork]]) ''(en Anglais)'' |
* Créer un bridge (pont) sur l'hôte (NAT/Routé), [[fr/LXC/SimpleBridge|LXC/SimpleBridge]] * Description de la configuration VLAN + bridge, voir [[fr/LXC/VlanNetworking|LXC/VlanNetworking]] * Utiliser le paquet libvirt pour une configuration facile du réseau [[fr/LXC/LibVirtDefaultNetwork|LXC/LibVirtDefaultNetwork]] |
Les containers Linux (LXC) fournissent un système libre de virtualisation de logiciels pour des ordinateurs fonctionnant grâce à un GNU/Linux. Cela est accompli à l'aide des niveaux d'isolation du noyau. Cela permet à une unité d'en faire fonctionner plusieurs virtuelles simultanément. Ces unités, similaires aux chroots, sont suffisamment isolées pour garantir la sécurité requise, et se répartissent efficacement les ressources disponibles puisqu'elles tournent sur le même noyau.
Pour toutes informations supplémentaires visitez : http://lxc.sourceforge.net/
Le support complet pour LXC (y compris les outils de gestion d'espace utilisateurs) sont disponible depuis la sortie de Debian 6.0 "Squeeze".
Problèmes connus sur Debian 7 "Wheezy":
LXC pourrait ne pas fournir un niveau d'isolation suffisant à ce moment, allouer des systèmes invités (guest systems) pourrait compromettre le système hôte dans certaines conditions
Apparemment cela progresse dans la 3.12/lxc-beta2: https://www.stgraber.org/2014/01/17/lxc-1-0-unprivileged-containers/
lxc-halt times-out (Voir Démarrer et arrêter des containers ci-dessous)
Mettre à jour vers "Jessie" casse le container - voir la section si dessous "Incompatibilités avec systemd". Ce comportement est en cours de révision. Voir 762194
Vous pouvez aussi lire quelques sous-pages :
?LXC/Squeeze-Backport (en Anglais)
Contents
Installation
- Paquets requis pour l'installation
aptitude install lxc
- Paquets optionnels pour l'installation
aptitude install bridge-utils libvirt-bin debootstrap
Préparer l' hôte
Ajoutez cette ligne à /etc/fstab (Ne pas faire ceci sous Jessie avec SystemD, depuis qu'il monte les cgroups. Cela n'est pas nécessaire si libvirt-bin est installé comme init.d/libvirt-bin montera /sys/fs/cgroup automatiquement)
cgroup /sys/fs/cgroup cgroup defaults 0 0
Essayez de le monter (un re-démarrage résoudra un éventuel "ressource busy problem" dans tout les cas).
mount /sys/fs/cgroup
En option : Activez le support des mémoires cgroups (CONFIG_CGROUP_MEM_RES_CTLR, 534964, embarqué depuis 2.6.39-bpo60-2 pour Squeeze). Il est désactivé par défaut. Vous avez besoin de l'activer dans les paramètres du noyau. Quand on utilise Grub2, cela peut être fait facilement en paramétrant GRUB_CMDLINE_LINUX="cgroup_enable=memory" dans /etc/default/grub puis en lançant update-grub2.
Même chose pour le swap et la memory (CONFIG_CGROUP_MEM_RES_CTLR_SWAP), paramètre du noyau "swapaccount=1" - voir http://lists.debian.org/debian-kernel/2012/01/msg00804.html .
Vérifiez la configuration du noyau :
# lxc-checkconfig Kernel config /proc/config.gz not found, looking in other places... Found kernel config file /boot/config-2.6.32-5-amd64 --- Namespaces --- Namespaces: enabled Utsname namespace: enabled Ipc namespace: enabled Pid namespace: enabled User namespace: enabled Network namespace: enabled Multiple /dev/pts instances: enabled --- Control groups --- Cgroup: enabled Cgroup namespace: enabled Cgroup device: enabled Cgroup sched: enabled Cgroup cpu account: enabled Cgroup memory controller: missing Cgroup cpuset: enabled --- Misc --- Veth pair device: enabled Macvlan: enabled Vlan: enabled File capabilities: enabled Note : Before booting a new kernel, you can check its configuration usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig
Au dessus du programme lxc-checkconfig est indiqué "Cgroup memory controller: missing". Si vous voulez le contrôle de la mémoire via les cgroups, vous aurez besoin de recompiler le noyau ( ou seulement ajouter cgroup_enable=memory à la ligne de commande du noyau sur Jessie ou supérieure).
Création du RootFS
Debian 8 "Jessie"/testing
Comme pour Debian 7 (voir plus bas), mais si vous voulez spécifier la suite ou le miroir , utilisez ces variables d'environnement :
SUITE=wheezy MIRROR=http://ftp.fr.debian.org/debian lxc-create -n monContainer -t debian
Alternativement vous pouvez utiliser cette ligne de commande:
lxc-create -n monContainer -t debian -- -r jessie
Mais vous aurez systemd à l'intérieur du container, ce qui ne fonctionne pas correctement pour le moment. Pensez à prendre note du mot de passe root du container. Pour démarrer le container, basculez à sysvinit et arrêtez le une nouvelle fois.
lxc-start -n monContainer # login apt-get -y install sysvinit-core # logout et tuer le container lxc-stop -n monContainer -k
Pensez à regarder la section "Incompatibilités avec systemd".
Debian 7 "Wheezy"
LXC s'installe correctement sur "Wheezy" (y compris sur un template Debian en fonctionnement depuis 7.4).
Utilisation:
lxc-create -n monContainer -t debian
Ce qui retournera sur quelle distribution l'installer.
Puis adaptez la configuration réseau dans /var/lib/lxc/monContainer/config, par exemple pour le connecter sur le bridge de libvirt :
lxc.utsname = monContainer lxc.network.type = veth lxc.network.flags = up lxc.network.link = virbr0 lxc.network.ipv4 = 0.0.0.0/24 lxc.network.hwaddr = 00:1E:62:CH:NG:ME
D'autres templates peuvent être téléchargés, avant la 7.4 nous recommandons celui qui est référencé sur la mailing list LXC container:
lxc-create -n monContainer -t debian-wheezy # ou pour un container 32-bit: linux32 lxc-create -n monContainer -t debian-wheezy
Debian 6.0 "Squeeze"
- En théorie vous pouvez utiliser n'importe quel outil pour créer un rootfs (debootstrap, multistrap, rootstock) tant que vous êtes sûr, que le résultat fonctionnera dans un container.
- Pour la première fois et à titre d'exemple, utilisez le script de création fourni par le paquet lxc.
cp -a /usr/lib/lxc/templates/lxc-debian /usr/lib/lxc/templates/lxc-squeeze
- (lxc-debian est configuré pour installer lenny, qui n'est plus accessible depuis les archives spécifiées.) Editez lxc-squeeze, en remplaçant "lenny" avec "squeeze" et "dhcp-client" par "isc-dhcp-client"
lxc-create -n monContainer -t squeeze -f /usr/share/doc/lxc/examples/lxc-veth.conf
Ici, nous utilisons le fichier de configuration lxc-veth.conf
Configuration réseaux des containers
Créer un bridge (pont) sur l'hôte (NAT/Routé), LXC/SimpleBridge
Description de la configuration VLAN + bridge, voir LXC/VlanNetworking
Utiliser le paquet libvirt pour une configuration facile du réseau LXC/LibVirtDefaultNetwork
Démarrer et arrêter des containers
Notes/Mise en garde sur le démarrage et l'arrêt de containers :
Quand vous vous connectez à la console d'un container, lxc vous indiquera comment le quitter. Mais lors de votre première connexion, la gestion du tty effacera l'écran, vous risquez donc de manquer cette petit information :
Taper <Ctrl+a q> pour sortir de la console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
Si vous utilsez l'écran et aussi la raccourcis Ctrl+a, tapez <Ctrl+a a q> pour sortir de la console.
Quand vous démarrez le container en mode premier plan (sans -d), il n'y a apparemment aucun moyen pour quitter le terminal (<Ctrl+a q> ne fonctionne pas). Assurez vous de démarrer les containers en mode "arrière plan" avec -d, à moins que vous ayez besoin de débugger avec un container qui n'a pas démarré.
lxc-halt retourne telinit: timeout opening/writing control channel /run/initctl - à la place, faite un 'poweroff' depuis le container, (Ceci est un mauvais conseil - cela éteindra l'hôte) et éteignez le avec un lxc-stop. Méthode de contournement : utilisez lxc.cap.drop = sys_admin dans le fichier de configuration.
Commandes actuelles :
Pour démarrer un container en arrière plan et plus tard l'attacher à la console à n'importe quel moment, lancez (par défaut, l'identifiant et le mot de passe sont root/root) :
lxc-start -n -d lxc-console -n
- Pour démarrer un container en arrière plan et pour qu'il reste attaché à la console, lancez (voir mise en garde plus bas) :
lxc-start -n monContainer
Pour éteindre un container proprement à l'aide de initv-system (voir la note sur le timeout ci-dessous) :
lxc-halt -n monContainer
Pour stopper un container sans arrêt propre :
lxc-stop -n monContainer
Pour lancer automatiquement les containers au démarrage de l'hôte, lier leurs fichiers de configuration /etc/lxc/auto/:
ln -s /var/lib/lxc/mycontainer/config /etc/lxc/auto/mycontainer
Relier les points de montage à l'intérieur du container
Par défaut seule le système de fichier du container est monté dans le container (même si sur l'hôte, /var/lib/lxc/mycontainer/rootfs n'a pas d'autres points de montage).
Pour monter un autre système de fichier dans le container, ajoutez à /var/lib/lxc/mycontainer/config :
lxc.mount.entry=/path/in/host/mount_point /var/lib/lxc/mycontainer/rootfs/mount_point none bind 0 0
et relancez le container. Le point de montage sera maintenant visible depuis le container.
Les deux peuvent être identique si nécessaire.
Incompatibilités avec systemd
Avec 0.8.0~rc1-8+deb7u2 ("Wheezy") et 1:1.0.6-4 ("Unstable") le lxc de Debian n'est pas compatible avec le fait de faire tourner systemd dans le container. Voir 766216.
Scénarios
Mettre à jour le container de "Wheezy" à "Jessie"
Quand on mets à niveau un invité lxc "Wheezy" vers "Jessie", la machine virtuelle lxc s'arrêtera de fonctionner, parce qu'à l'heure ou l'on parle (23.11.2014) le systéme va migrer automatiquement vers systemd. Voir le 766233. 762194.
Solutions:
Revenir à sysv
Si la machine virtuelle a migré automatique vers systmed via une mise à jour, alors vous pouvez revenir à sysvinit :
lxc-stop -n monContainer # stop la vm # ou si cela ne fonctionne pas utilisez lxc-kill # la prochaine étape demande à la VM d'être montée sur /var/lib/lxc/monContainer/root chroot /var/lib/lxc/monContainer/root # chroot dans la vm apt-get install sysvinit-core # re-installe l'ancien sysvinit
Alternativement vous pouvez essayer de démarrer le container en arrière plan et faire la même chose via la console du container comme cela est décrit dans la section Debian 8 "Jessie"/testing.
Empêcher votre système de migrer vers systemd lors de la mise à jour
Avant la mise à niveau, lancez :
apt-get install sysvinit-core
ou lancez la commande suivante à la place du dist-upgrade habituel :
apt-get dist-upgrade sysvinit-core
Reconfigurer les VM mises à jour
Notez que la solution suivante fonctionne uniquement sur les hôtes fonctionnant sous Jessie. Cela ne fonctionnera pas sur les hôtes qui tournent encore sous Wheezy.
Ajoutez ceci à la configuration de votre container :
lxc.autodev = 1 lxc.kmsg = 0
Et dans l'invité
Ajustez getty@.service:
cp /lib/systemd/system/getty@.service /etc/systemd/system # Décommentez la ligne ConditionPathExists=/dev/tty0 dans la copie de getty@.service
Masquez udev.service et systemd-udevd.service:
systemctl mask udev.service systemd-udevd.service
Créer de nouvelles VM "Jessie"
Si vous tentez de créer une VM fraîche de "Jessie", le patch qui suit pourrait vous être utile. Notez que le patch n'est pas complément testé, donc une confirmation que le patch fonctionne serait la bienvenue. Lisez aussi la discussion associé au billet, puisque à l'heure actuelle (23.11.2014) le patch est encore en évaluation et il n'est toujours pas appliqué.
Aussi, quand vous vous lancez des VM lxc, vous devriez régler "lxc.autodev = 1" dans votre "/var/lib/lxc/monContainer/config". Voir aussi 761197 dans 'Bugs connus et "problèmes connus"' ci-dessus, et ceci Problèmes LXC dans Github.
Support
Pour discuter à propos de LXC et Debian : LXC mailing list (Sur Gmane)
Références
LXC sur Debian Squeeze (Publié le 2010-05-01)
Configurer LXC sur Debian squeeze (Publié le 06/11/2011)
Comment utiliser les Linux containers (lxc) sous Debian Squeeze
Voir aussi :
http://blog.rot13.org/2010/03/lxc-watchdog_missing_bits_for_openvz_-_linux_containers_migration.html qui décrit un outils pour contrôler le démarrage et l'arrêt des invités à l'aide d'un signal d'allumage, et aussi plus de paramètres pour la console.
Bugs connus et "problèmes connus"
600466 - "Respawning too fast" messages and can't connect to console due to missing tty(1234) nodes in generated container rootfs. Workaround: remove from container's /etc/inittab or start container in interactive mode and mknod -m 660 dev/tty1 c 5 1 for each required tty.
Quelques bugs qui peuvent s'appliquer à des containers non-officiels.
"telinit: /run/initctl: No such file or directory" en lançant un lxc-halt?
mknod -m 600 /var/lib/lxc/monContainer/rootfs/run/initctl p
et ajoutez "sys_admin" à la ligne lxc.cap.drop dans /var/lib/lxc/monContainer/config? Voir http://wiki.deimos.fr/LXC_:_Install_and_configure_the_Linux_Containers#telinit:_.2Frun.2Finitctl:_No_such_file_or_directory
761197 - "systemd-journald surcharge le CPU dans un container lxc jessie"
Comme noté dans le rapport de bug, paramétrez "lxc.kmsg=0" dans "/var/lib/lxc/monContainer/root" et supprimez "/dev/kmsg" dans le container semble régler le problème.
Voir aussi
Autres Systèmes de virtualisation