Debian 10, création conteneurs - LXC
LXC
testé sur Debian Buster 10.2
Présentation:
(source: Wikipédia) LXC, contraction de l’anglais Linux Containers est un système de virtualisation, utilisant l’isolation comme méthode de cloisonnement au niveau du système d’exploitation. Il est utilisé pour faire fonctionner des environnements Linux isolés les uns des autres dans des conteneurs, partageant le même noyau et une plus ou moins grande partie du système hôte. Le conteneur apporte une virtualisation de l’environnement d’exécution (processeur, mémoire vive, réseau, système de fichier…) et non pas de la machine. Pour cette raison, on parle de « conteneur » et non de « machine virtuelle ». LXC est le système de conteneurisation, sur lequel s’appuie le logiciel Docker.
Objectif de cette documentation: Installer, configurer avec le réseau libvirt ou bridge et utiliser LXC.
AVEC LIBVIRT
(pour obtenir une adresse en 192.168.X.X)
Installez les paquets requis
1
# apt-get install lxc libvirt-daemon-system
Editez le fichier /etc/lxc/default.conf
1
# vim /etc/lxc/default.conf
Assurez-vous d’avoir ces lignes:
1
2
3
4
5
6
7
8
lxc.net.0.type = empty
lxc.apparmor.profile = generated
lxc.apparmor.allow_nesting = 1
lxc.net.0.type = veth
lxc.net.0.link = virbr0
lxc.net.0.flags = up
lxc.apparmor.profile = generated
lxc.apparmor.allow_nesting = 1
Vérifiez la configuration
1
# lxc-checkconfig
Démarrez le réseau
1
# virsh net-start default
Configurez le démarrage automatique du réseau
1
# virsh net-autostart default
Redémarrez le service LXC
1
2
# systemctl restart lxc-net
# systemctl status lxc-net
Affichez les interfaces réseaux virtuelles
1
# brctl show
EN BRIDGE
(pour obtenir une adresse en 10.0.3.X)
Installez les paquets requis
1
# apt-get install lxc
Editez le fichier /etc/default/lxc-net
1
# vim /etc/default/lxc-net
Ajoutez cette ligne:
1
USE_LXC_BRIDGE="true"
Editez le fichier /etc/lxc/default.conf
1
# vim /etc/lxc/default.conf
Ajoutez ces lignes:
1
2
3
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
Vérifiez la configuration
1
# lxc-checkconfig
Redémarrez le service LXC
1
2
# systemctl restart lxc-net
# systemctl status lxc-net
EXPOSER UN PORT
Router un port dans un conteneur
1
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.3.11:8080
ou Editez le fichier /etc/network/interfaces
1
up iptables -t nat -A PREROUTING -i <host-iface> -p tcp --dport <source-port> -j DNAT --to <container-ip>:<container-port>
UTILISER LXC
Créer un conteneur nommé “c1” avec la distribution Debian
1
# lxc-create -t debian -n c1
ou si vous avez une erreur réseau:
1
# lxc-create -t download -n debian -- --keyserver hkp://keyserver.ubuntu.com:80
Affichez la liste des conteneurs
1
# lxc-ls -f
Démarrez le conteneur nommé “debian”
1
# lxc-start -n debian
Se connecter au conteneur nommé “c1”
1
# lxc-console -t 0 -n c1
ou
1
# lxc-attach -n debian --clear-env
Démarrer automatiquement un contenur
1
# lxc config set debian boot.autostart true
ou Editez le fichier /var/lib/lxc/$containername/config pour avoir cette ligne:
1
lxc.start.auto = 1
Arrêter brutalement un conteneur
1
# lxc-stop -n NOMDUCONTENEUR
Arrêter proprement un conteneur
1
# lxc-halt -n NOMDUCONTENEUR
Détruire un conteneur
1
# lxc-destroy NOMDUCONTENEUR
Affichez les informations d’un conteneur
1
# lxc-info NOMDUCONTENEUR
Copier un conteneur
1
# lxc-copy -n debian1 -N debian2
Relier un point de montage à l’intérieur du conteneur
1
lxc.mount.entry=/CHEMIN /var/lib/lxc/NOMDUCONTENEUR/rootfs/mount_point none bind 0 0
Changer la configuration d’un conteneur
1
# vim /var/lib/lxc/debian/config