Outils pour utilisateurs

Outils du site


installation_et_utilisation_de_container_lxc

Ceci est une ancienne révision du document !


LXC container ?

LXC, contraction de l’anglais Linux Containers3 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 ».

Installation de containers LXC sous Debian 11

apt install lxc

Réseau : configuration mode Independent bridge setup

Installation et configuration du réseau : édition du fichier /etc/default/lxc-net

nano /etc/default/lxc-net
USE_LXC_BRIDGE="true"
LXC_BRIDGE="lxcbr0"
LXC_ADDR="10.0.3.1"
LXC_NETMASK="255.255.255.0"
LXC_NETWORK="10.0.3.0/24"
LXC_DHCP_RANGE="10.0.3.200,10.0.3.254"
LXC_DHCP_MAX="253"
LXC_DHCP_CONFILE=""
LXC_DOMAIN=""

Pour créer un template pour la configuration de nouveau containers :

nano /etc/lxc/default.conf
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx
lxc.apparmor.profile = generated
lxc.apparmor.allow_nesting = 1

Redémarrer la couche réseau

 sudo service lxc-net restart

Création de container LXC

lxc-create -n musique -t download

Demande quelle distribution installer pour quelle architecture

lxc-create -n musique -t download  -- -d ubuntu -r bionic -a amd64
DOWNLOAD_KEYSERVER="keyserver.ubuntu.com" lxc-create -n atelier -t download  -- -d debian -r bullseye -a amd64

Configuration type d'un container

Exemple pour un container nommé “ynh”

nano /var/lib/lxc/ynh/config
# Distribution configuration
lxc.include = /usr/share/lxc/config/common.conf
lxc.arch = linux64

# Container specific configuration
lxc.apparmor.profile = generated
lxc.apparmor.allow_nesting = 1
lxc.rootfs.path = dir:/var/lib/lxc/ynh/rootfs
lxc.uts.name = ynh

# Network configuration
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:dd:91:8b

# Autostart
lxc.start.auto = 1

Voir pour cinfig ip fixe (mais dns ?)

lxc.net.0.hwaddr = mac adresse
lxc.net.0.ipv4.address = 100.0.0.2
lxc.net.0.ipv4.gateway = 100.0.0.1

Commandes de base pour manipuler des containers

Créer un nouveau container sous debian

lxc-create -n ynh -t download -- -d debian -r bullseye -a amd64

Si

Setting up the GPG keyring
ERROR: Unable to fetch GPG key from keyserver
lxc-create: dokos: lxccontainer.c: create_run_template: 1616 Failed to create container from template

alors https://serverok.in/lxc-error-unable-to-fetch-gpg-key-from-keyserver

DOWNLOAD_KEYSERVER="keyserver.ubuntu.com" lxc-create -n ynh -t download -- -d debian -r bullseye -a amd64

Lister les containers présents sur le serveur et leurs IP si démarrés

lxc-ls -f

Démarrer un container nommé ynh

lxc-start ynh

Se loguer dans le container en tant que root

lxc-attach ynh

Arrêter un container

lxc-stop ynh

Debug du démarrage d'un container

lxc-start ynh --logfile ~/loguplxccontainer.txt --logpriority DEBUG

Snapshot de container

Pour réaliser un snapshot

lxc-snapshot -n nomducontainer

Lister les snapshots

lxc-snapshot -n nomducontainer -L

Restaurer un snapshot

lxc-snapshot -n nomducontainer -r nomdusnapshotàrestaurer

Détruire un snapshot

lxc-snapshot -n nomducontainer -d nomdusnapshot

Pour plus d'options :

Envoyer une commande au container LXC depuis l'extérieur

Par exemple pour faire un dump de la base de données (à adapter en fonction de la bdd)

lxc-attach -n nomducontainer -- /bin/bash -c "sudo -u postgres pg_dumpall | gzip -c > /home/ubuntu/bddbackup.gz"

Exemple de script pour sauvegarder toutes les bdd de containers utilisant la même configuration

lxc_all-backupdb.sh
*
#!/bin/bash
# Get the vm list
vms="$(lxc-ls --active)"
 
# Update each vm
update_vm(){
        local vm="$1"
        echo "*** [VM: $vm [$(hostname) @ $(date)] ] ***"
        /usr/bin/lxc-attach -n "$vm" -- /bin/bash -c "sudo -u postgres pg_dumpall | gzip -c > /home/ubuntu/bddbackup.gz"
        echo "- backup db done ----------------------------------------------------------------"
}
 
# Do it
for v in $vms
do
   update_vm "$v"
done

Reverse proxy NGINX vers un container LXC

On installe un serveur web nginx qui va renvoyer le traffic web vers le container LXC précédemment installé

installation_et_utilisation_de_container_lxc.1647982839.txt.gz · Dernière modification: 2022/03/22 21:00 de Benjamin Labomedia