« Lxc » : différence entre les versions
(→Bonus) |
|||
Ligne 93 : | Ligne 93 : | ||
=Bonus= | =Bonus= | ||
Script de génération d'adresse MAC (en fonction du nom du conteneur) | Script de génération d'adresse MAC (en fonction du nom du conteneur) | ||
if [ -n "$1" ]; then | if [ -n "$1" ]; then | ||
OID="44:8a:5b" | OID="44:8a:5b" | ||
Ligne 102 : | Ligne 102 : | ||
echo " $FUNCNAME myhost" | echo " $FUNCNAME myhost" | ||
fi | fi | ||
=Informations utiles= | =Informations utiles= |
Version du 9 janvier 2017 à 15:13
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
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
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 lxc.network.ipv4
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
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
Commandes de gestion des conteneurs
Démarrage
Démarrage du conteneur en tache de fond
# lxc-start -n <NOM_CONTENEUR> -d
Console
- ntrer dans la console du conteur (attach). Pour sortir, tappez
ctrl+a q
# 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)
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
Informations utiles
- Les conteneurs sont situés dans
/var/lib/lxc
- Les conteneurs étalons téléchargés sont stockés dans
/var/cache/lxc
- Le paquet contenant l'outil ping est
iputils-ping
- Pour fixer le DNS (qui est automatiquement récupéré par le DHCP) il faut installer le paquet
resolconf
et mettre une section dns-namerver <IP_DNS> dans le fichier/etc/network/interfaces
- Détails des arguments
lxc.network
du fichier de config : https://linuxcontainers.org/fr/lxc/manpages/man5/lxc.container.conf.5.html