Lxc

De Wiki doc

Installation et utilisation de LXC (au plus simple)

Installation

Installation des paquets

# apt install lxc bridge-utils

Configuration du reseau

Création d'une interface pour le mode bridge (le NAT c'est le mal)

# vim /etc/network/interfaces

<source lang="bash"> auto br0 iface br0 inet static address 192.168.1.161 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 bridge_ports eth0 bridge_stp off bridge_maxwait 5 bridge_fd 0 </source>

Création d'un conteneur et configuration

Création d'un conteneur sous Debian 8

# lxc-create -n <NOM_CONTENEUR> -t debian -- -r jessie

Ajout de la configuration réseau. Attention, la directive <source lang="bash" inline>lxc.network.ipv4</source> donne une IP au conteneur mais le fichier interfaces du debian est réglé sur dhcp par défaut. Le conteneur récupère donc 2 IP. Soit on désactive cette directive, soit on vire le DHCP (je pense que mettre une IP fixe au conteneur est plus simple).

# vim /var/lib/lxc/<NOM_CONTENEUR>/config

<source lang="bash"> lxc.network.type = veth lxc.network.hwaddr = 00:16:3e:62:91:94 lxc.network.name = eth0

  1. lxc.network.ipv4 = 192.168.1.163

lxc.network.link = br0 lxc.network.flags = up </source>

Commandes de gestion des conteneurs

Démarrage

Démarrage du conteneur en tache de fond

# lxc-start -n <NOM_CONTENEUR> -d

Console

  1. ntrer dans la console du conteur (attach). Pour sortir, tappez <source inline>ctrl+a q</source>
# lxc-console -n <NOM_CONTENEUR>

Arrêter

Arrêter le conteneur (-k pour forcer)

# lxc-stop -n <NOM_CONTENEUR> [-k]

Supprimer

Supprimer un conteneur

# lxc-destroy -n <NOM_CONTENEUR> [Ajouter -f pour forcer l'extinction]

Lister

Lister les conteurs démarrés ou arrétés

# lxc-ls [--active | --stopped]

Lister les conteneur dans un tableau

# lxc-ls --fancy

Info

Savoir si un conteneur est allumé ou éteint

# lxc-info -n <NOM_CONTENEUR>

Sauvegarder et restaurer un conteneur

Sauvegarde

Sauvegarde (conserve automatiquement les permissions)

# ls /var/lib/lxc/
# tar czvf Nom_Conteneur_Date.tar.gz Nom_Conteneur

Restauration

Restaurer le conteneur (par défaut, l'option -p est activé et permet de conserver les permissions. Verifiez si c'est le cas le première fois)

# ls /var/lib/lxc/
# tar xzvf[p| --preserve-permissions] Nom_Conteneur_Date.tar.gz

Bonus

Script de génération d'adresse MAC (en fonction du nom du conteneur) <source lang="bash">

    if [ -n "$1" ]; then
               OID="44:8a:5b"
               RAND=$(echo $1 | md5sum | sed 's/\(..\)\(..\)\(..\).*/\1:\2:\3/')
               echo "$OID:$RAND"
       else
               echo "ERREUR: Merci de soumettre un nom pour générer l'adresse MAC :"
               echo "       $FUNCNAME myhost"
       fi

</source>

Informations utiles

  • Les conteneurs sont situés dans <source lang="bash" inline>/var/lib/lxc</source>
  • Le paquet contenant l'outil ping est <source lang="bash" inline>iputils-ping</source>
  • Pour fixer le DNS (qui est automatiquement récupéré par le DHCP) il faut installer le paquet <source lang="bash" inline>resolconf</source> et mettre une section dns-namerver <IP_DNS> dans le fichier <source lang="bash" inline>/etc/network/interfaces</source>
  • Détails des arguments <source lang="bash" inline>lxc.network</source> du fichier de config : https://linuxcontainers.org/fr/lxc/manpages/man5/lxc.container.conf.5.html

Sources