This commit is contained in:
nemunaire 2015-09-28 22:31:53 +02:00
parent b3d5f320ce
commit e2c72c1261
7 changed files with 93 additions and 50 deletions

View File

@ -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 HEADER = header.tex
TEMPLATE = CambridgeUS TEMPLATE = CambridgeUS
COLORTHEME = beaver COLORTHEME = beaver

36
slides/apps.md Normal file
View File

@ -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

View File

@ -4,14 +4,14 @@
### Que doit-on isoler ? ### Que doit-on isoler ?
* Matériel ? > * Matériel ?
* Processus ? > * Processus ?
* Réseau ? > * Réseau ?
* Système de fichiers ? > * Système de fichiers ?
* Utilisateurs et groupes ? > * Utilisateurs et groupes ?
* Nom et domaine de la machine ! > * Nom et domaine de la machine !
* IPC ! > * IPC !
* Horloge ? > * Horloge ?
## Made in Linux ## Made in Linux
@ -31,16 +31,20 @@ Isolation des processus (PID Namespace), interface réseau (Network
Namespace), partitions montées (Mount Namespace), utilisateurs et Namespace), partitions montées (Mount Namespace), utilisateurs et
groupes (User Namespace), nom de machine (UTS Namespace), IPC. groupes (User Namespace), nom de machine (UTS Namespace), IPC.
`namespaces(7)`
#### CGroups #### CGroups
Statistiques sur l'utilisation des ressources et limitation. 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 #### Capabilities
Limitation de ce que `root` peut faire. Limitation de ce que `root` peut faire.
`capabilities(7)`
## pour les nuls ## pour les nuls
@ -52,7 +56,7 @@ TODO screen C'est pas sorcier
#### Système de fichiers #### Système de fichiers
Sous-arbre de la racine Sous-arbre de la racine.
* Union FileSystems * Union FileSystems
* Thin provisioning * Thin provisioning

View File

@ -6,18 +6,5 @@
%\setmonofont{fantasque-sans-mono} %\setmonofont{fantasque-sans-mono}
\setmonofont{Inconsolata} \setmonofont{Inconsolata}
\beamertemplatenavigationsymbolsempty \beamertemplatenavigationsymbolsempty
\AtBeginSection{ \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
}
}
\AtBeginSubsection{} \AtBeginSubsection{}

View File

@ -1,6 +1,6 @@
# Avant tout... # Avant tout...
## John von Neuman ## John von Neumann
### Un personnage important ### 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?

View File

@ -1,4 +1,4 @@
# Système d'exploitation # Système d'exploitation vs. hyperviseur
## Est-ce bien nécessaire ... ## Est-ce bien nécessaire ...
@ -6,30 +6,35 @@
TODO Logos de différents noyaux TODO Logos de différents noyaux
. . .
Oui !
### ... le temps de boot ? ### ... 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 ; https://0xax.gitbooks.io/linux-insides/content/
* détection du matériel ;
* préparation des interfaces pour l'userland ;
* montage du système de fichiers racine ;
* lancement de `/sbin/init`
### ... le système de fichiers ? ### ... le système de fichiers ?
Eh oui ! Eh oui !
### ... d'isoler ? ### ... d'isoler ?
* Mutualisation des services > * Limitation des ressources ;
> * partage du temps de calcul ;
TODO 2-3 mots accrocheurs > * 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 ## Les techniques d'isolation
@ -39,12 +44,14 @@ TODO 2-3 mots accrocheurs
* **Sécurité :** douteuse ; * **Sécurité :** douteuse ;
* **Coûts :** élevés. * **Coûts :** élevés.
### Virtualisation et paravirtualisation ### Virtualisation et paravirtualisation
* **Difficulté :** débutant ; * **Difficulté :** débutant ;
* **Sécurité :** OK ; * **Sécurité :** OK ;
* **Coûts :** réduits. * **Coûts :** réduits.
### Mais ... ### Mais ...
TODO clipart lumière TODO clipart lumière

View File

@ -8,31 +8,37 @@ Bonjour
Hésitez pas à poser des questions Hésitez pas à poser des questions
### 2 ### 2
Commençons par parler de quelqu'un d'important... 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 ### 3
Test - Gestion de la concurrence d'accès au matériel
### 4
- Gestion de l'accès au matériel
- Répartition du temps CPU entre les tâches - Répartition du temps CPU entre les tâches
- Gestion du contexte des tâches (mémoire, registres, context switch, ...) - Gestion du contexte des tâches (mémoire, registres, context switch, ...)
- Gestion des erreurs (division par 0)
- Diverses couches d'abstraction : - Diverses couches d'abstraction :
- matériel : clavier/souris/... - matériel : clavier/souris/...
- FS - FS
### 5 ### 4
- bootloader: charge le noyau en mem et jump - bootloader: charge le noyau en mem et jump
- détection du matériel - détection du matériel
- mise en place des interfaces : réseau, FS, nom de machine, utilisateurs, droits, permissions, ... - mise en place des interfaces : réseau, FS, nom de machine, utilisateurs, droits, permissions, ...
- montage de la racine - montage de la racine
- /sbin/init - /sbin/init
### 6 ### 5
Le noyau seul ne fait rien, il lui faut des programmes et des données. 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. Tous les programmes n'ont pas besoin de toutes les données.
Mais certains programmes échangent des données entre-eux (IPC, socket, ...) Mais certains programmes échangent des données entre-eux (IPC, socket, ...)
Et s'il y a une vulnérabilité ? Et s'il y a une vulnérabilité ?
pourquoi partager les données de services qui ne communiquent pas entre eux ?
### 7 ### 7
- grosse machine coûte moins cher - limitation quantité de RAM, BP réseau
- pourquoi partager les données de services qui ne communiquent pas entre eux ? - allocation du temps de calcul par groupe (1 serveur peut avoir plusieurs process qui sont schedulés indépendamment = triche !)
=> serveur DNS, mails, web, de notation de l'école - DOS locaux => machine à genoux
- plusieurs serveur web/ssh
- sécu : droits root, exploit, ...
### 8 ### 8
DEMO chroot DEMO chroot
- complexe à mettre en œuvre - complexe à mettre en œuvre
@ -62,6 +68,7 @@ On appel ça des conteneurs !
Que doit-on implémenter concrétement ? Que doit-on implémenter concrétement ?
- matos : non, le noyau l'abstrait déjà (ex webcam/group video) mais limitation des ressources - 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 - 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 - users, groups, nom de machine et IPC : pas de raison qu'ils soient partagés
- horloge : non, la timezone peut changer - horloge : non, la timezone peut changer
### 12 ### 12
@ -78,7 +85,7 @@ DEMO capabilities
### 13 ### 13
- crée listes distinctes ou ajoute des propriétés - crée listes distinctes ou ajoute des propriétés
- FS : sous-arbre de la racine comme chroot + AUFS/OverlayFS (cache), LVM (thin provisioning) - 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 ### 14
- Réseau : pas évident : - Réseau : pas évident :
* 1 carte réseau = 1 seule IP * 1 carte réseau = 1 seule IP