--- categories: virtualisation title: Howto LXC ... * Documentation : [LXC](https://linuxcontainers.org/lxc/introduction/) est une interface en espace utilisateur pour piloter les features d'isolation du noyau Linux, permettant de créer des containers. # Installation ~~~ # apt install lxc bridge-utils ??libvirt-bin?? debootstrap ~~~ # Mise en place du réseau virtuel Obligatoire si vous voulez un accès Internet dans vos conteneurs. Une des façons de faire et de monter un bridge qui contiendra tout les conteneurs. Ensuite via iptables, on fera du NAT pour router le réseau privé du bridge via l'interface principale (souvent eth0). ~~~ # cat /etc/network/interfaces [...] auto br0 iface br0 inet static address 192.0.2.254 netmask 255.255.255.0 ~~~ ~~~ # echo 1 > /proc/sys/net/ipv4/ip_forward # /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ~~~ # Installation d'un container En choisissant de créer un conteneur avec `-t download`, cela vous permettra via un prompt de choisir quel type de distribution à installer. ~~~ # lxc-create -t download -n foo ~~~ On peut directement choisir quel type de distribution on veut. ~~~ # lxc-create -t debian -n foo ~~~ ## Déclarer le réseau virtuel dans la configuration du conteneur Exemple avec la machine `foo`, via le fichier `/var/lib/lxc/foo/config` ~~~ lxc.network.type = veth lxc.network.link = br0 lxc.network.ipv4 = 192.0.2.10/24 lxc.network.ipv4.gateway = 192.0.2.254 lxc.network.name = eth0 lxc.network.flags = up ~~~ # Utilisation basique Lister les conteneurs : ~~~ # lxc-ls ~~~ Démarrer un conteneur : ~~~ # lxc-start -n foo -d ~~~ Entrer dans un conteneur : ~~~ # lxc-attach -n foo ~~~ Arrêter un conteneur : ~~~ # lxc-stop -n foo ~~~ Autres commandes utiles : ~~~ # lxc-info -n foo # lxc-console -n foo # lxc-halt -n foo # lxc-destroy -n foo ~~~ Pour quitter un `lxc-console`. Il faut faire ``. Il semblerait cependant que cela ne fonctionne pas ! # Divers / FAQ / Diagnostic ## systemd Si systemd dans un container pose souci, on peut revenir à sysvinit. ~~~ # apt install sysvinit-core ~~~ ## Erreur accès /dev ~~~ Couldn't open /dev/null: Permission denied ~~~ C'est parce que /dev est crée en 700 au lieu de 755. Pour fixer : ~~~ # chmod 755 /dev ~~~