IMA4 2016/2017 ECP2

De Wiki de Projets IMA
Révision datée du 18 juin 2017 à 14:43 par Fcockenp (discussion | contributions) (Travail effectué)

Présentation du projet

Contexte

L'élève effectue son stage en Roumanie et dispose d'un PC avec une machine virtuelle Linux. Une connexion Internet stable est disponible.

Objectif

Il vous est demandé de concevoir une architecture système et réseau permettant de créer et de détruire facilement des conteneurs pour sites Web personnels. Les conteneurs doivent être créés sans utiliser d'usine à gaz de gestion de conteneurs (typiquement l'environnement Docker).

Description du projet

D'un point de vue système, les conteneurs seront créés en utilisant l'utilitaire Linux unshare. Vous devez créer un conteneur avec son propre espace disque et sa propre table de processus. Vous utiliserez ensuite les cgroups pour limiter la mémoire et l'espace disque accessibles par les conteneurs. Consultez [1] pour plus de détails.

D'un point de vue réseau vous utilisez la commande ip pour créer une interface virtuelle eth0 dans le conteneur en liaison avec une interface miroir dans le système d'exploitation hôte. L'interface miroir se trouvera dans un commutateur logiciel créé par la commande brctl. Les conteneurs seront ainsi accessible par réseau du système hôte. Consultez [2] pour plus détails.

Concernant le système de fichiers du conteneur, vous le construirez en utilisant l'utilitaire debootstrap. Un conteneur doit faire tourner un serveur ssh, un serveur Web et un serveur de base de données.

Vous prendrez soin d'écrire un script de création et de destruction de conteneur mais aussi un script de relance des conteneurs en cas de redémarrage du système hôte. Le script de création s'occupe de créer le système de fichiers et d'affecter une adresse IP. Le script de lancement effectue les commandes nécessaires pour lancer, de façon isolée, le processus initial du conteneur, de créer l'interface réseau du conteneur et de lancer les processus nécessaires à la gestion du site Web.

Un système de redirection de ports doit permettre à un utilisateur de se connecter d'Internet, par ssh, à son conteneur. L'accès aux sites Web se fera par un mandataire inverse tournant sur la machine hôte.

Cahier des charges

Planning prévisionnel

Travail effectué

Pour pouvoir commencer ce projet, je me suis d'abord lancé dans des recherches étant donné que je n'ai aucune connaissance dans ce domaine, la plus grosse partie de ce début de projet portera sur la compréhension du sujet et se qui m'est réellement demandé de faire.

Après des recherches sur les conteneurs, je suis passé à l'utilitaire linux Unshare. J'ai pour l'instant un peu de mal à comprendre comment celui ci fonctionne.

Je suis actuellement en train d'essayer de créer un conteneur. Je rencontre quelques problèmes. J'utilise le lien fournit pour avancer sur ce sujet.

Lorsque j'utilise unshare, un problème survient avec les options. Il me faut en trouver la cause pour avancer plus loin.

Après avoir cherché pendant un long moment et avoir testé sur un certain nombre de machine, je me suis aperçu que la version de j'utilisais sur ma machine virtuel posé certain problème. N'arrivant pas à les résoudre, j'ai installé une autre machine virtuel beaucoup plus récente que la précédente.

J'ai alors pu faire marcher les commandes qui bloquées. Je suis actuellement sur l'écriture du script de démarrage. Le problème de je rencontre actuellement est lorsque je souhaite mettre les processus dans le répertoire tasks directement depuis le scrip, je n'y arrive pas. J'ai déja pu testé de le faire directement en ligne de commande il n'y a aucun soucis.

Sources

https://openclassrooms.com/courses/introduction-aux-conteneurs/

Documents