Les conteneurs LXC

Rédigé par davidd - - Aucun commentaire

Bonjour,

aujourd'hui je vais vous expliquer comment créer et utiliser les conteneurs LXC.

 

À quoi peut bien me servir un "conteneur"? pouvez vous vous demander ; eh bien cela permet par exemple de tester un nouveau logiciel sans risquer de "polluer" votre ordinateur :

  1. Vous créez votre conteneur
  2. Vous installer le logiciel à tester à l'intérieur
  3. Une fois testé, vous détruisez le conteneur

 Cela peut aussi être utile si vous écrivez par exemple un programme qui peut potentiellement "abîmer" votre machine : Vous le testez dans un conteneur pour être sûr qu'il ne fait pas de dégâts.

Un autre usage peut être de tester ou d'utiliser un logiciel qui ne fonctionne que sous une autre distribution que celle dont vous avez l'habitude (par exemple un programme qui fonctionne sous Redhat alors que votre ordinateur est installé avec Ubuntu).

 Enfin, une utilisation courante des conteneurs permet d'isoler une ou des applications pour des raisons de sécurité. Il est possible par exemple de donner accès à un conteneur à des utilisateurs inconnus sans que ceux-ci puissent acoir accès au reste du réseau.

Tout d'abord, quelques définitions

 

Qu'est-ce qu'un "conteneur LXC"

Selon Wikipediia:

LXC, contraction de l’anglais Linux Containers3 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 fichier…) et non pas de la machine. Pour cette raison, on parle de « conteneur » et non de machine virtuelle.

 En résumé, un conteneur permet de créer une pseudo-machine (qui n'est pas une machine virtuelle!) sur votre station ou serveur de manière à isoler un environnement ou une application, afin que ce qui est à l'interieur du conteneur ne puisse modifier la station ou le serveur "physique" (on peut tout à fait créer des conteneurs dans une machine virtuelle!). L'avantage de cette approche est de consommer moins de ressources sur la machine portant le ou les conteneurs, puisque la partie "matérielle" de la machine virtuelle n'a pas besoin d'être simulée.

 

Installation de LXC sur debian/ubuntu

Les paquets nécessaires sont disponibles dans les dépôts officiels.

 


sudo apt install lxc lxctl
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
The following additional packages will be installed:
bridge-utils debootstrap dirmngr dns-root-data dnsmasq-base libipc-system-simple-perl liblinux-lvm-perl liblxc1 libnet-ssh2-perl libossp-uuid-perl libossp-uuid16
libpam-cgfs libterm-readkey-perl libyaml-tiny-perl lxcfs perl-doc python3-lxc rsync uidmap
Paquets suggérés :
dbus-user-session pinentry-gnome3 tor uuid apparmor btrfs-tools
Les NOUVEAUX paquets suivants seront installés :
bridge-utils debootstrap dirmngr dns-root-data dnsmasq-base libipc-system-simple-perl liblinux-lvm-perl liblxc1 libnet-ssh2-perl libossp-uuid-perl libossp-uuid16
libpam-cgfs libterm-readkey-perl libyaml-tiny-perl lxc lxcfs lxctl perl-doc python3-lxc rsync uidmap
0 mis à jour, 21 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 9 950 ko dans les archives.
Après cette opération, 20,5 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n]

Utilisation des conteneurs

Création d'un conteneur

 La création d'un conteneur se fait de manière très simple : On choisit l'architecture matérielle souhaitée (Ex : amd64) et la distribution. On utilise en suite l'utilitaire 'lxc-create' qui va se charger de télécharger l'archive nécessaire et de créer le conteneur.

 

 lxc-create -t download -n lxc61 -- -a amd64 -d centos -r 7

 

options :

 

-t : Télécharger le conteneur depuis le site officiel

-n <nom du serveur/conteneur>

-a <architecture matérielle émulée>

-d <distribution à installer>

-r <revision de la distribution

 

Pour une Debian « Jessie »

 

 lxc-create -t download -n lxc61 -- -a amd64 -d debian -r jessie

 

 À noter : Par défaut sur debian et assimilés (ubuntu,...) les fichiers du conteneur sont dans

ls -lrt /var/lib/lxc/<nom du conteneur>/rootfs/

 

Démarrage du conteneur

 Une fois crée, il faut démarrer le conteneur, de la même manière que vous démarrez votre ordinateur ou une machine virtuelle.

lxc-start -n lxc61

 

Connexion au conteneur

 Dernière étape : Une fois crée et lancé, votre conteneur est près pour être utilisé. Il faut alors se connecter dessus.

Il faut bien noter que le conteneur ne contient (sic) pas encore de serveur SSH ou de configuration réseau.La méthode pour "entrer" dans le conteneur est de s'y "attacher".

lxc-attach -n lxc61

 

Il est aussi possible de se "chrooter" directement dans le conteneur:

chroot /var/lib/lxc/lxc61/rootfs/ /bin/bash

 

Une fois que toutes les étapes précedentes ont été effectuées, vous disposez d'un conteneur complet qui se comporte de la même manière qu'un serveur ou une station de travail (physique ou virtuelle) : Vous pouvez la mettre à jour, installer de nouvelles applications, etc.

À noter : La connexion à un conteneur par interface graphique est un peu complexe et sera abordée dans un prochain article.

Exemple complet

lxc-create -t download -n srv01 -- -a amd64 -d debian -r jessie
Using image from local cache Unpacking the rootfs --- You just created a Debian container (release=jessie, arch=amd64, variant=default) To enable sshd, run: apt-get install openssh-server For security reason, container images ship without user accounts and without a root password. Use lxc-attach or chroot directly into the rootfs to set a root password or create user accounts. root@host:~# lxc-start -n srv01 root@host:~# lxc-attach -n srv01 root@srv01:~#

 

Classé dans : Tutoriaux - Mots clés : aucun

Écrire un commentaire

Quelle est la dernière lettre du mot mrral ? :