Translation(s): English - Français

(!) ?Discussion


Note : le document original est plus récent que cette traduction.


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 en utilisant "CGroups" et "namespaces". Cela permet à une unité d'en faire fonctionner plusieurs virtuelles simultanément. Ces unités, similaires aux chroots, sont isolées et se répartissent efficacement les ressources disponibles puisqu'elles tournent sur le même noyau.

Visitez : https://linuxcontainers.org/ pour toutes informations supplémentaires

Le support complet pour LXC (y compris les outils de gestion d'espace utilisateurs) sont disponibles depuis la sortie de Debian 6.0 "Squeeze".

Vous pouvez aussi consulter ces quelques pages :

Versions supportées de LXC

Il y a deux versions des outils LXC, situés en espaces utilisateurs, supportés par upstream :

LXC 1.0 est disponible dans Jessie. LXC 2.0 is disponible dans Stretch et dans les backports de Jessie.

Quand vous cherchez de la documentation, des manuels et des tutoriels, pensez à vérifier à quelle version ils s'appliquent, les choses peuvent avoir changées.

Le reste de cette page essayera de faire le distinguo entre les informations qui s'appliquent aux deux versions et celles qui s'appliquent seulement à l'une d'entre elles.

Points communs

Mot de passe root

Certains modèles(templates) vont créer un container avec un mot de passe aléatoire, certains avec un pré-défini (comme "root" ou "toor") et certains sans mot de passe du tout.

L'objectif d'upstream est qu'a terme les modèles n'aient plus de mot de passe, comme il n'est plus nécessaire d'avoir un mot de passe pour rattacher un container localement via lxc-attach -n <container>.

Si vous avez besoin de paramétrer le mot de passe d'un container (parce que vous avez oublié celui donné aléatoirement ou pour modifier celui par défaut), vous pouvez faire cela avec lxc-attach -n <container> passwd.

<Il reste un gros block à traduire à partir d'ici>

Installation

aptitude install lxc

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 tous les cas).

mount /sys/fs/cgroup

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"

cp -a /usr/lib/lxc/templates/lxc-debian /usr/lib/lxc/templates/lxc-squeeze

lxc-create -n monContainer -t squeeze -f /usr/share/doc/lxc/examples/lxc-veth.conf

Configuration réseaux des containers

Démarrer et arrêter des containers

Notes/Mise en garde sur le démarrage et l'arrêt de containers :

Commandes actuelles :

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 met à 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 systemd 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"

La création de nouveaux containers Jessie ne devrait pas rencontrer de problème.

Support

Références

Voir aussi :

Bugs connus et "problèmes connus"

Voir aussi

CategoryL10nFrUpdate