From e2c72c1261a1de2d3eb4a428921ba3604ac38240 Mon Sep 17 00:00:00 2001 From: nemunaire Date: Mon, 28 Sep 2015 22:31:53 +0200 Subject: [PATCH] wip --- slides/Makefile | 2 +- slides/apps.md | 36 ++++++++++++++++++++++++++++++++++++ slides/containers.md | 24 ++++++++++++++---------- slides/header.tex | 15 +-------------- slides/intro.md | 8 +++++--- slides/os.md | 33 ++++++++++++++++++++------------- slides/slides.pdfpc | 25 ++++++++++++++++--------- 7 files changed, 93 insertions(+), 50 deletions(-) create mode 100644 slides/apps.md diff --git a/slides/Makefile b/slides/Makefile index 61fe693..c174c06 100644 --- a/slides/Makefile +++ b/slides/Makefile @@ -1,4 +1,4 @@ -SOURCES = slides.md rappels.md gnulinux.md prod.md +SOURCES = slides.md intro.md os.md containers.md apps.md HEADER = header.tex TEMPLATE = CambridgeUS COLORTHEME = beaver diff --git a/slides/apps.md b/slides/apps.md new file mode 100644 index 0000000..bd11434 --- /dev/null +++ b/slides/apps.md @@ -0,0 +1,36 @@ +# Conteneurs applicatif + +## Grandes idées + +TODO une image représentant les conteneurs applicatifs + +---- + +TODO une image pour expliquer UnionFS + +---- + +TODO une image d'architecture nginx/php-fpm + +---- + +TODO logo Docker + +---- + +TODO image tetris, illustration ordonnancement + + +## Quelques bonnes pratiques + +### Garder les couches propres + +### Séparer les données du système + +TODO image représentant les data only container + +### Prendre les arguments depuis l'environnement + +### Ne pas installer syslog, utiliser `docker logs` + +### Ne pas containeriser des applications intégrant déjà cette notion diff --git a/slides/containers.md b/slides/containers.md index 6cb2464..adaf1ce 100644 --- a/slides/containers.md +++ b/slides/containers.md @@ -4,14 +4,14 @@ ### Que doit-on isoler ? -* Matériel ? -* Processus ? -* Réseau ? -* Système de fichiers ? -* Utilisateurs et groupes ? -* Nom et domaine de la machine ! -* IPC ! -* Horloge ? +> * Matériel ? +> * Processus ? +> * Réseau ? +> * Système de fichiers ? +> * Utilisateurs et groupes ? +> * Nom et domaine de la machine ! +> * IPC ! +> * Horloge ? ## Made in Linux @@ -31,16 +31,20 @@ Isolation des processus (PID Namespace), interface réseau (Network Namespace), partitions montées (Mount Namespace), utilisateurs et groupes (User Namespace), nom de machine (UTS Namespace), IPC. +`namespaces(7)` + #### CGroups Statistiques sur l'utilisation des ressources et limitation. -http://kernel.org/doc/FIXME/cgroups.txt +https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt #### Capabilities Limitation de ce que `root` peut faire. +`capabilities(7)` + ## pour les nuls @@ -52,7 +56,7 @@ TODO screen C'est pas sorcier #### Système de fichiers -Sous-arbre de la racine +Sous-arbre de la racine. * Union FileSystems * Thin provisioning diff --git a/slides/header.tex b/slides/header.tex index b6ac630..090b966 100644 --- a/slides/header.tex +++ b/slides/header.tex @@ -6,18 +6,5 @@ %\setmonofont{fantasque-sans-mono} \setmonofont{Inconsolata} \beamertemplatenavigationsymbolsempty -\AtBeginSection{ - \let\insertsectionnumber\relax - \let\sectionname\relax - \frame{ - \begingroup - \centering - {\usebeamerfont{section name}\usebeamercolor[fg]{section name}\sectionname~\insertsectionnumber} - \vskip1em\par - \begin{beamercolorbox}[sep=12pt,center]{part title} - \usebeamerfont{section title}\insertsection\par - \end{beamercolorbox} - \endgroup - } -} +\AtBeginSection{} \AtBeginSubsection{} diff --git a/slides/intro.md b/slides/intro.md index 9403b56..d3a2608 100644 --- a/slides/intro.md +++ b/slides/intro.md @@ -1,6 +1,6 @@ # Avant tout... -## John von Neuman +## John von Neumann ### Un personnage important @@ -8,6 +8,8 @@ TODO ici une photo --- -#### John von Neuman +#### John von Neumann -> Citation de lui sur le langage Assembleur +About assembly language: + +> Why would you want more than machine language? diff --git a/slides/os.md b/slides/os.md index f42bbe7..f2004e7 100644 --- a/slides/os.md +++ b/slides/os.md @@ -1,4 +1,4 @@ -# Système d'exploitation +# Système d'exploitation vs. hyperviseur ## Est-ce bien nécessaire ... @@ -6,30 +6,35 @@ TODO Logos de différents noyaux -. . . - -Oui ! ### ... le temps de boot ? +> * Initialisation du/des processeur(s) et de la mémoire ; +> * détection du matériel ; +> * préparation des interfaces pour l'userland ; +> * montage du système de fichiers racine ; +> * lancement de `/sbin/init` + . . . -* Initialisation du/des processeur(s) et de la mémoire ; -* détection du matériel ; -* préparation des interfaces pour l'userland ; -* montage du système de fichiers racine ; -* lancement de `/sbin/init` +https://0xax.gitbooks.io/linux-insides/content/ + ### ... le système de fichiers ? Eh oui ! + ### ... d'isoler ? -* Mutualisation des services - -TODO 2-3 mots accrocheurs - +> * Limitation des ressources ; +> * partage du temps de calcul ; +> * prévention des dénis de service : +> ```sh +> 42sh$ while true; do mkdir x; cd x; done +> ``` +> * abstraction des ports ; +> * sécurité (root, exploit, ...). ## Les techniques d'isolation @@ -39,12 +44,14 @@ TODO 2-3 mots accrocheurs * **Sécurité :** douteuse ; * **Coûts :** élevés. + ### Virtualisation et paravirtualisation * **Difficulté :** débutant ; * **Sécurité :** OK ; * **Coûts :** réduits. + ### Mais ... TODO clipart lumière diff --git a/slides/slides.pdfpc b/slides/slides.pdfpc index bfab8f1..5847995 100644 --- a/slides/slides.pdfpc +++ b/slides/slides.pdfpc @@ -8,31 +8,37 @@ Bonjour Hésitez pas à poser des questions ### 2 Commençons par parler de quelqu'un d'important... +Pourquoi aurait-on besoin de gaspiller du temps de calcul scientifique si précieux pour générer du code binaire ? +- 1 machine = 1 programme => perte de temps de calcul pendant les I/O +=> Ordonnanceur rudimentaires : partager le temps de calcul entre les bloquages d'I/O +=> problèmes : ex : partage de l'espace d'adressage (=> MMU) ### 3 -Test -### 4 -- Gestion de l'accès au matériel +- Gestion de la concurrence d'accès au matériel - Répartition du temps CPU entre les tâches - Gestion du contexte des tâches (mémoire, registres, context switch, ...) +- Gestion des erreurs (division par 0) - Diverses couches d'abstraction : - matériel : clavier/souris/... - FS -### 5 +### 4 - bootloader: charge le noyau en mem et jump - détection du matériel - mise en place des interfaces : réseau, FS, nom de machine, utilisateurs, droits, permissions, ... - montage de la racine - /sbin/init -### 6 +### 5 Le noyau seul ne fait rien, il lui faut des programmes et des données. Tous les programmes n'ont pas besoin de toutes les données. Mais certains programmes échangent des données entre-eux (IPC, socket, ...) Et s'il y a une vulnérabilité ? +pourquoi partager les données de services qui ne communiquent pas entre eux ? ### 7 -- grosse machine coûte moins cher -- pourquoi partager les données de services qui ne communiquent pas entre eux ? -=> serveur DNS, mails, web, de notation de l'école +- limitation quantité de RAM, BP réseau +- allocation du temps de calcul par groupe (1 serveur peut avoir plusieurs process qui sont schedulés indépendamment = triche !) +- DOS locaux => machine à genoux +- plusieurs serveur web/ssh +- sécu : droits root, exploit, ... ### 8 DEMO chroot - complexe à mettre en œuvre @@ -62,6 +68,7 @@ On appel ça des conteneurs ! Que doit-on implémenter concrétement ? - matos : non, le noyau l'abstrait déjà (ex webcam/group video) mais limitation des ressources - processus, interfaces réseau et liste de partitions montées pour éviter l'espionnage et l'accès à des données sensibles +- réseau : - users, groups, nom de machine et IPC : pas de raison qu'ils soient partagés - horloge : non, la timezone peut changer ### 12 @@ -78,7 +85,7 @@ DEMO capabilities ### 13 - crée listes distinctes ou ajoute des propriétés - FS : sous-arbre de la racine comme chroot + AUFS/OverlayFS (cache), LVM (thin provisioning) -- Processus : premier lancé PID 1 +- Processus : premier lancé PID 1 (2 PID : in/out NS) ### 14 - Réseau : pas évident : * 1 carte réseau = 1 seule IP