Difference entre VM, LXC et Container comme Docker
Une VM émule un serveur physique via un hyperviseur[1] (Proxmox, KVM, etc.). Ainsi, chaque VM tourne avec son propre système d’exploitation.
LXC est un container Linux qui ressemble à une VM, mais sans noyau dédié : il partage celui de l’hôte. Cela en fait une VM beaucoup plus légère qu’une VM classique.
Par contre, les conteneurs Docker ou Podman, eux, ne visent pas à reproduire un système complet. Ils sont utilisé pour exécuter une seule application de façon isolée. De ce fait, en taille de déployement, ils sont encore plus légers que LXC et s’appuient sur des images prédéfinies pour déployer rapidement des services (comme une app Flask, etc.).
Utilisation de LXC avec Proxmox
Avant de déployer votre application, commencez par récupérer une template. Ici, j’utilise Ubuntu 24.04.
Ensuite, cliquez sur « Create CT » et sélectionnez votre template.
Une fois le container créé, la première chose que je fais est de créer un nouvel utilisateur à l’intérieur du container, puis d’activer SSH afin de pouvoir le gérer à distance. Voir l’article ici.
$ sudo adduser nom_utilisateur
$ sudo usermod -aG sudo nom_utilisateur
Puis désactiver le compte root du conteneur.
$ sudo passwd -dl root
Vérifier que le serveur SSH dans LXC est actif.
$ systemctl status ssh
Installation de Python et Flask dans le conteneur LXC
1. Mettre à jour le système et installer Python
Commencez par mettre à jour la liste des paquets, puis installer Python 3 et pip.
$ sudo apt update
$ sudo apt install python3 python3-pip
Vérifier que l’installation s’est bien déroulée :
$ python3 --version
$ pip3 --version
2. Créer un environnement virtuel (recommandé)
Je vous recommande très fortement de créer un environnement virtuel pour gérer les dépendances spécifiques au projet, afin d’isoler les dépendances de notre projet par rapport à ceux de l’hôte du système. Par la suite, celà vous permettra de jouer avec les différentes versions des paquets sans avoir à modifier ceux de l’hôte.
Installez le module venv s’il n’est pas présent :
$ sudo apt install python3-venv
Créez un environnement virtuel dans le répertoire de votre projet, ici je l’ai nommé venv :
$ python3 -m venv venv
Activez l’environnement virtuel :
$ source venv/bin/activate
Une fois activé, vous verrez (venv) apparaître en début de ligne dans le terminal.
3. Installation de Flask et de ces dépendances
Si votre projet contient un fichier requirements.txt (liste des dépendances), installez le en une seule commande :
(venv)$ pip install -r requirements.txt
ou :
(venv)$ pip install Flask
Exemple minimal (juste Flask) du contenu de requirements.txt :
Flask==3.0.3
Vous pouvez vérifier que Flask est bien installé avec :
(venv)$ python3 -m flask --version
Si aucune erreur n’apparaît et que la version s’affiche, c’est bon signe !
4. Démarrer votre application Flask
Assurez-vous d’être dans le répertoire contenant votre fichier applicatif (par exemple app.py[1]),
$ cat app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
Puis lancez l’application :
$ flask run --host=0.0.0.0 --port=5000
L’option --host=0.0.0.0 est essentielle dans un conteneur : elle permet d’accepter les connexions depuis l’extérieur (et pas seulement depuis localhost).
Votre application Flask est maintenant accessible à l’adresse http://<IP-du-conteneur>:5000.
5. Que faire en cas de problème avec l’environnement virtuel ?
Si vous rencontrez des erreurs liées aux dépendances ou à l’environnement virtuel, la solution la plus propre est de le recréer depuis zéro :
- Désactivez l’environnement virtuel actuel :
$ deactivate - Supprimez le répertoire de l’environnement virtuel actuel :
$ rm -rf venv - Créez un nouvel environnement virtuel (reprendre les etapes ci dessus)
$ python3 -m venv venv$ source venv/bin/activate - Réinstaller les dépendances
$ pip install -r requirements.txt # ou pip install Flask
Conclusion
Vous savez maintenant installer Python, créer un environnement virtuel, et déployer une application Flask dans un conteneur LXC sous Proxmox.
sources:
How to Create Python Virtual Environments on Ubuntu 18.04
Installing Flask on Ubuntu 22.04 or 20.04 LTS Linux
Flask: A Minimal Application






