« Lxc » : différence entre les versions

De Wiki doc

Ligne 36 : Ligne 36 :


<source lang="bash">
<source lang="bash">
lxc.network.type = veth
lxc.network.type = veth
lxc.network.hwaddr = 00:16:3e:62:91:94
lxc.network.hwaddr = 00:16:3e:62:91:94
lxc.network.name = eth0
lxc.network.name = eth0
#lxc.network.ipv4 = 192.168.1.163
#lxc.network.ipv4 = 192.168.1.163
lxc.network.link = br0
lxc.network.link = br0
lxc.network.flags = up
lxc.network.flags = up
</source>
</source>



Version du 9 janvier 2017 à 12:52

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
#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 (-f pour forcer)

# lxc-destroy -n <NOM_CONTENEUR> [-f]

À noter qu'il est préférable d'utiliser la commande suivante pour supprimer un conteneur (j'ai déjà eu des mauvaises surprises avec l'autre commandes)

# rm -rf /var/lib/lxc/<NOM_CONTENEUR>

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>
  • Les conteneurs étalons téléchargés sont stockés dans <source lang="bash" inline>/var/cache/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