« Lxc » : différence entre les versions

De Wiki doc

Ligne 12 : Ligne 12 :


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



Version du 9 janvier 2017 à 12:49

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 (-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