Société Canonical Publication de l'outil pour organiser le travail des conteneurs isolés , gestionnaire de conteneurs et système de fichiers virtuel pour simuler dans les conteneurs /proc, /sys et la représentation virtualisée de cgroupfs pour les distributions sans prise en charge des espaces de noms pour cgroup. La version 4.0 est considérée comme une version à support prolongé, avec des mises à jour fournies pendant 5 ans.
LXC est un runtime pour exécuter à la fois des conteneurs systèmes et des conteneurs d'applications individuelles (OCI). L'ensemble de LXC comprend la bibliothèque liblxc, un ensemble d'utilitaires (lxc-create, lxc-start, lxc-stop, lxc-ls, etc.), des modèles pour créer des conteneurs et un ensemble de liaisons pour plusieurs langages de programmation. L'isolement est réalisé à l'aide des mécanismes intégrés du noyau Linux. L'isolement des processus, de la pile réseau ipc, uts, des identifiants utilisateur et des points de montage utilise le mécanisme des espaces de noms. Les ressources sont limitées par des cgroups. Pour réduire les privilèges et limiter l'accès, des fonctionnalités du noyau telles que les profils Apparmor et SELinux, des politiques Seccomp, des Chroots (pivot_root) et des capacités sont utilisées. Le code de LXC est écrit en C et distribué sous licence GPLv2.
LXD est une surcouche à LXC, CRIU et QEMU, utilisée pour la gestion centralisée des conteneurs et des machines virtuelles sur un ou plusieurs serveurs. Alors que LXC est un outil de bas niveau pour manipuler des conteneurs individuels, LXD fonctionne comme un processus en arrière-plan, recevant des requêtes sur le réseau via une API REST et permettant de créer des configurations évolutives déployées sur un cluster de plusieurs serveurs.
Différents backends de stockage sont pris en charge (arborescence de répertoires, ZFS, Btrfs, LVM), des snapshots d’état, la migration en direct de conteneurs fonctionnant d'une machine à une autre, et des outils pour organiser le stockage des images. Le code de LXD est écrit en Go et distribué sous licence Apache 2.0.
Améliorations clés dans LXC 4.0 :
- Le pilote pour travailler avec cgroup a été complètement réécrit. Prise en charge de la hiérarchie de cgroup unifiée (cgroup2). Ajout de la fonctionnalité du contrôleur freezer, qui permet d'arrêter le fonctionnement dans cgroup et de libérer temporairement certaines ressources (CPU, entrée/sortie et potentiellement même la mémoire) pour réaliser d'autres tâches ;
- Une infrastructure pour intercepter les appels système a été mise en place ;
- Ajout du support du sous-système du noyau « pidfd », destiné à gérer la situation de réutilisation de PID (pidfd est lié à un processus spécifique et ne change pas, alors que le PID peut être associé à un autre processus après la fin du processus courant associé à ce PID) ;
- Amélioration de la création et de la suppression des dispositifs réseau, ainsi que de leur déplacement entre les espaces de noms du sous-système réseau ;
- Mise en œuvre de la possibilité de déplacer des dispositifs réseau sans fil (nl80211) dans des conteneurs.
Améliorations clés dans LXD 4.0 :
- Ajout du support pour le démarrage non seulement de conteneurs, mais aussi de machines virtuelles ;
- Pour le segmentage des serveurs LXD, un concept de projets a été proposé, simplifiant la gestion des groupes de conteneurs et de machines virtuelles. Chaque projet peut inclure son propre ensemble de conteneurs, de machines virtuelles, d'images, de profils et de sections de stockage. Des restrictions spécifiques peuvent être définies et les paramètres peuvent être modifiés en fonction des projets ;
- Ajout du support pour intercepter les appels système pour les conteneurs ;
- Implémentation de la création de sauvegardes d'environnements et de leur restauration ;
- Création automatisée de snapshots d'environnements et de sections de stockage avec la possibilité de définir une durée de vie du snapshot ;
- Ajout d'une API pour surveiller l'état du réseau (lxc network info) ;
- Ajout du support de , un système de fichiers virtuel pour faire correspondre les points de montage aux espaces de noms des identifiants d'utilisateurs (user namespace) ;
- Nouveaux types de adaptateurs réseau « ipvlan » et « routed » proposés ;
- Ajout d'un backend pour utiliser des stockages basés sur CephFS ;
- Pour les clusters, ajout du support pour la réplication d'images et des configurations multi-architectures ;
- Ajout de la possibilité de gestion des accès basée sur les rôles (RBAC) ;
- Ajout du support pour CGroup2 ;
- Ajout de la possibilité de configurer l'adresse MAC et de déterminer l'adresse source pour le NAT ;
- Ajout d'une API pour gérer les liaisons dans le DHCP (leases) ;
- Ajout du support pour Nftables.
Source : opennet.ru
