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