Conteneurs avec LXC¶
2018
Installation¶
sudo apt install lxc
sudo apt install bridge-utils debootstrap #libvirt-daemon-system libvirt-clients
Vérifier la configuration du noyau :
lxc-checkconfig
Création d’un conteneur¶
Le répertoire /vdisk/vmXX/ contient le fichier lxc.conf définissant l’intégralité de la configuration du conteneur, le répertoire rootfs avec toutes les données de la machine virtuelle et le fichier run.sh permettant de démarrer la machine.
Récupération des données de la machine virtuelle. Dans notre cas la distribution est debian version stretch avec une architecture 64 bits.
debootstrap --include=lxc --arch=amd64 buster rootfs
Création de la configuration /vdisk/vmXX/lxc.conf sans interface réseau
# lxc version 2
lxc.utsname = vm1
lxc.arch = x86_64
# filesystem
lxc.rootfs.path = /vdisk/vmXX/rootfs
lxc.mount.entry=proc /proc proc nodev,noexec,nosuid 0 0
lxc.mount.entry=tmpfs /dev/shm tmpfs defaults 0 0
lxc.pts=1024
# Environment variable to pass into the conteneur for user root
lxc.environment= PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
lxc.environment= TERM=xterm
# lxc version 2
name = vm1
architecture = x86_64
# filesystem
lxc.rootfs.path = /mnt/vdisk/rootfs
lxc.mount.entry=proc /proc proc nodev,noexec,nosuid 0 0
lxc.mount.entry=tmpfs /dev/shm tmpfs defaults 0 0
lxc.tty.max=1024
# Environment variable to pass into the conteneur for user root
lxc.environment= PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
lxc.environment= TERM=xterm
Ajouter la machine virtuelle Ă LXC (/var/lib/lxc)
lxc-create -n vm1 -f /vdisk/vmXX/lxc.conf -t none
Ouvrir un bash pour une machine virtuelle
lxc-attach -n vm1 -f /mnt/vdisk/lxc.conf
Exécuter une tâche dans le conteneur
lxc-execute -n vm1 -f /vdisk/vmXX/lxc.conf -- /bin/ls
Configuration réseau du conteneur¶
Avec un bridge
Dans /vdisk/vmXX/lxc.conf
# networking
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.hwaddr = C0:00:00:F0:00:01
lxc.network.ipv4 = 192.168.42.61/24
lxc.network.ipv4.gateway = 192.168.42.129
#lxc.network.ipv6 =
Dans /etc/network/interfaces, ajouter le bridge br0 pour le lier à l’interface physique enp0s3 avec une adresse statique.
auto br0
iface br0 inet static
bridge_ports enp0s3
bridge_fd 0
bridge_maxwait 0
address 192.168.42.60
netmask 255.255.255.0
gateway 192.168.42.129
Activation du forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
Installation d’Apache2 dans le conteneur¶
Ouvrir un terminal du conteneur, puis installer apache2.
lxc-attach -n vm1 -f /mnt/vdisk/lxc.conf
apt install apache2
Au niveau de la machine hôte, nous pouvons démarrer le conteneur et l’arrêter.
lxc-start -n vm1 -f /mnt/vdisk/lxc.conf -d
lxc-stop -n vm1