Outils pour utilisateurs

Outils du site


reseau:linuxcontainerpresentation

Présentation de netLXC (nouvelle version : 09/2020)

Présentation de LXC

LinuX Containers (LXC) 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 fichiers…) et non pas de la machine. Pour cette raison, on parle de « conteneur » et non de machine virtuelle.

L'objectif est d'offrir un environnement neutre, non influencé par des distributions ou fournisseurs, permettant le développement des technologies liées aux conteneurs Linux.

LXC se concentre sur les conteneurs systèmes. Ceux-ci offrent un environnement aussi proche que possible de celui d'une machine virtuelle, mais sans le surcoût associé à l'utilisation d'un noyau séparé ou à la simulation de matériel.

LXC repose sur la notion de groupes de contrôle Linux, les cgroups. Ici, chaque groupe de contrôle offre aux applications une isolation totale des ressources (notamment processeur, mémoire et accès E/S), et ce sans recourir à des machines virtuelles à part entière.

Les conteneurs Linux proposent également une isolation complète de leur espace de noms. Les fonctions telles que les systèmes de fichiers, les ID réseaux et les ID utilisateurs, ainsi que tout autre élément généralement associé aux systèmes d'exploitation, peuvent donc être considérés comme « uniques » du point de vue de chaque conteneur.

Nous allons maintenant concevoir un réseau de containers LXC sur machine hôte Debian pour bien maîtriser les commandes usuelles LXC et essayer de bien comprendre les possibilités de cette technologie.

Différence entre LXC et Docker

Les plate-formes de conteneurisation d'applications, telles que Docker, ne remplacent pas les conteneurs Linux. L'idée consiste à utiliser LXC comme base, puis à ajouter des capacités de niveau supérieur.

Docker = LXC augmenté

Par exemple, une plate-forme comme Docker autorise la portabilité entre machines (qui exécutent aussi Docker) et permet ainsi à une application et à ses composants d'exister en tant qu'objet mobile unique.

LXC seul permet la mobilité, mais la build est liée à la configuration du système. Donc la déplacer sur une autre machine peut introduire des différences susceptibles d'empêcher le conteneur de l'application de s'exécuter à l'identique (voire de s'exécuter tout court).

Différence entre LXC et d'autres solutions à base d'hyperviseur comme Xen et KVM

La principale différence entre un container LXC et une machine virtuelle Xen ou KVM tient au fait qu'il n'y a pas de deuxième noyau :

le container LXC utilise le même noyau que la machine hôte.

Cela présente des avantages comme des inconvénients :

  • excellentes performances grâce à l'absence d'hyperviseur et de noyau intermédiaire, le fait que le noyau peut avoir une vision globale des processus du système et peut donc ordonnancer leur exécution de manière plus efficace que si 2 noyaux indépendants essayaient d'ordonnancer des ensembles de processus sans cette vision d'ensemble,
  • il n'est pas possible d'avoir une machine virtuelle avec un noyau différent (qu'il s'agisse d'un autre système d'exploitation ou simplement d'une autre version de Linux).

netLXC sur Debian 10 (Buster)

Attention : cette installation a été réalisée sur Debian 10 implantée sur Oracle VirtualBox.

Notamment, la configuration réseau des containers sollicite le serveur DHCP de la machine hôte Virtualbox. Dans un autre contexte, il vous faudra adapter cette documentation notamment au niveau de la gestion des connexions réseaux (ce qui peut être plus complexe).

root@Debian10netLXC:/home/btssio# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 10 (buster)
Release:	10
Codename:	buster
root@Debian10netLXC:/home/btssio# 

~~DISCUSSION~~

reseau/linuxcontainerpresentation.txt · Dernière modification: 2020/06/08 12:13 (modification externe)