LXC

Introduction :

LXC est logiciel de virtualisation utilisant l’isolation, c’est à dire que les machines utilisent le même noyau. (ce n’est pas la même chose que VirtualBox ou VMWare)
Perso j’utilise LXC car il est rapide et assez simple d’emploi. Toutefois :

Attention lors de l’utilisation de sudo, car en cas de faille dans un container il est possible de lancer une attaque qui permettrait une escalade de privilèges et donc d’accéder à la machine hôte.

NOTE : c’est un article assez court, si vous voulez je peux développer un peu plus.

Installation :

Le paquet LXC est présent dans les repository de base, donc pas de soucis. Toutefois je vous conseille de partir sur une installation Ubuntu Server sans interface graphique.

# aptitude install lxc lxc-utils // le # est pour dire que je suis passé en root, vous pouvez utiliser sudo
Vous pouvez aussi installer lxc-template qui contient des template de conteneur tout fait.

Crée un conteneur :

# lxc-create -t download -n elastic — -d ubuntu -r bionic -a amd64

  • – n est le nom du conteneur
  • -d la distribution
  • -r le nom de la version
  • -a l’architecture

La première création est assez longue le temps du téléchargement de l’image.
Les paramètres par défaut sont dans /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

Comme on le voit lxc va utiliser un bridge du nom de lxcbr0 (donc vérifier que vous avez bien bridge-utils

Le répertoire par défaut des conteneurs est dans /var/lib/lxc
Vous y trouverez les dossiers qui contiennent le fichier de configuration et le roofs

Lancer le conteneur :

# lxc-create -n test -t ubuntu

Ou -n est pour le nom du conteneur
– t le template utilisé pour le conteneur
Il y a plusieurs templates :
– lxc-alpine
– lxc-busybox
– lxc-debian
– lxc-fedora-legacy
– lxc-oci
– lxc-oracle
– lxc-sabayon
-lxc-sshd
– lxc-voidlinux
– lxc-altlinux
– lxc-centos
– lxc-download
– lxc-gentoo
– lxc-openmandriva
– lxc-plamo
– lxc-slackware
– lxc-ubuntu
– lxc-archlinux
– lxc-cirros
– lxc-fedora
– lxc-local
– lxc-opensuse
– lxc-pld
– lxc-sparclinux
– lxc-ubuntu-cloud

Connexion au conteneur :

# lxc-attach -n elactic
Vous serez connecté en root, ajouter un utilisateur avec son mot de passe.
La configuration réseau par défaut passe par un bridge (lxcbr0) qui est en 10.0.3.0/24
Donc l’adresse du conteneur sera en 10.0.3.X c’est bien mais pas très pratique pour y accéder (il faut passer par un NAT)

Dans mon cas il s’agit d’une machine me permettant de faire des tests donc je veux pouvoir y accéder directement via son IP qui est sur le même réseau que la machine hôte.
Faite attention n’utilisez pas cette configuration en production

Je ne vais pas détailler comment faire car cela prendrait un peu trop de place, mais ‘il y a de la demande je verrais.

Commandes utiles :

Lancer un conteneur :
# lxc-start -n nomconteneur

Stopper un conteneur :
# lxc-stop -n nomconteneur

Se connecter à un conteneur :
# lxc-console -n nomconteneur
Mais il est plus simple de passer par SSH car pour quitter la console il faut utiliser ctrl a + q , hors c’est un raccourci que j’utilise pour autre chose.

Lister les conteneur :
# lxc-ls
avec -f pour plus de détail

Des infos sur le conteneur :
# lxc-info -n nomconteneur

Supprimer un conteneur :
# lxc-destroy -n nomconteneur

Démarrer un conteneur avec une trace :
# lxc-start -n nomconteneur -l trace -o output.out


Fatal error: Uncaught exception 'wfWAFStorageFileException' with message 'Unable to save temporary file for atomic writing.' in /var/www/alternc/c/cinfo/www/courbeil.com/documentation/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php:34 Stack trace: #0 /var/www/alternc/c/cinfo/www/courbeil.com/documentation/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php(658): wfWAFStorageFile::atomicFilePutContents('/var/www/altern...', '<?php exit('Acc...') #1 [internal function]: wfWAFStorageFile->saveConfig('livewaf') #2 {main} thrown in /var/www/alternc/c/cinfo/www/courbeil.com/documentation/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php on line 34