Déployer et monter un container lxc avec lxd

lxc containers illustration
Soumis par Robin le ven 15/05/2020 - 20:45

Procédure

Déploiement d'un container LXC Ubuntu18.04 depuis un hôte Manjaro Linux.

Installation

yay -S lxc
yay -S lxd
sudo usermod -aG lxd $USER
sudo systemctl enable lxd
reboot

Configuration

# Créer ensuite des bridges, pools et autres joyeusetés selon ses besoins
sudo lxd init

Modifier le fichier /etc/lxc/default.conf pour y ajouter :

lxc.idmap = u 0 100000 65536
lxc.idmap = g 0 100000 65536

Créer le fichier /etc/subuid :

root:1000:1
root:100000:65536

Et le fichier /etc/subgid :

root:1000:1
root:100000:65536

Création et lancement d'un container Ubuntu Server 18.04

sudo lxc launch ubuntu:18.04 rcwd

Et pour un accès terminal :

lxc exec rcwd -- /bin/bash # root
lxc exec rcwd -- su ubuntu # regular user

Montage

Du container vers l'hôte (avec bindfs)

sudo mkdir /mnt/lxc_ubuntu_server_18.04_web_root
# Utilisation de bindfs pour pouvoir monter en tant qu'utilisateur
sudo bindfs -u chinaskijr /var/lib/lxd/containers/rcwd/rootfs/var/www/html/ /mnt/lxc_ubuntu_server_18.04_web_root

De l'hôte vers le container

On va router vers un container non privilégié l'user 1000 à l'user www-data sur place.

# Le montage "écrase" les autres fichiers, le mettre dans un dossier vide
lxc config device add rcwd phpstorm_projects disk source=/home/chinaskijr/PhpstormProjects path=/var/www/html/xenon_phpstorm_projects
 # Bind l'utilisateur courant de l'hôte sur www-data de rcwd
lxc config set rcwd raw.idmap "both 1000 33"
lxc restart rcwd

Création d'un proxy

# Le serveur web du container sera accessible sur `localhost:8080`
lxc config device add rcwd port80 proxy listen=tcp:0.0.0.0:8080 connect=tcp:127.0.0.1:80ç
# Pour accéder à la base de données PostgreSQL depuis PHPStorm
lxc config device add rcwd port5432 proxy listen=tcp:0.0.0.0:8081 connect=tcp:127.0.0.1:5432

Virtual Hosts et sous-domaines

On se fait plaisir avec des VirtualHost

<VirtualHost *:80>
    DocumentRoot /var/www/html/xenon_phpstorm_projects/thesee
    Servername thesee.localhost

    # Le reste de la conf...

</VirtualHost>

Thésée est accessible à l'adresse thesee.localhost:8080

Actions à mener après une installation Ubuntu 18.04

Encodage des caractères

Dans le fichier /etc/locale.gen décommenter la ligne

Fr_FR.UTF-8

Puis lancer les commandes suivantes

sudo locale-gen
systemctl restart postgresql

Sources générales

Sites