Post

Debian 10, création conteneurs - LXC

Debian 10, création conteneurs - LXC

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
Cet article est sous licence CC BY 4.0 par l'auteur.