mirroir readonly du Gitit wiki.evolix.org (attention, ne rien commiter/merger sur ce dépôt) https://wiki.evolix.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.7 KiB

categories title
virtualisation Howto LXC

LXC est une interface en espace utilisateur pour piloter les fonctionnalités d’isolation du noyau Linux, permettant de créer des containers.

Installation

# apt install lxc bridge-utils debootstrap

Note: Avec Debian Buster, il faut rajouter le paquet lxc-templates

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

Pas de réseau (sauf lo) :

lxc.network.type = empty

Partage du réseau avec l’hôte

lxc.network.type = none

Utilisation basique

Lister les conteneurs :

# lxc-ls
foo bar baz

On peut obtenir plus de détails avec l’option --fancy

# lxc-ls --fancy
NAME  STATE   AUTOSTART GROUPS IPV4          IPV6              
foo   STOPPED 0         -      -             -
bar   RUNNING 1         -      192.0.2.73    2001:DB8::73

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 <Ctrl+a q>. 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