# Voyage par conteneur ## Made in Unix ### Que doit-on isoler ? > * Matériel ? > * Processus ? > * Réseau ? > * Système de fichiers ? > * Utilisateurs et groupes ? > * Nom et domaine de la machine ! > * IPC ! > * Horloge ? > * Logs ? ## Made in Linux ### Pour cette mission, vous disposerez de ... ![](armory.jpg) ---- #### Namespaces 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. https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt #### Capabilities Limitation de ce que `root` peut faire. `capabilities(7)` ## pour les nuls ### Mais Jamy, comment ça marche ? ![](cps.jpg) ### Syscall * `clone` * `unshare` * `setns` . . . #### Exemple ```c int fd; /* Get descriptor for namespace */ fd = open("/proc/PID/ns/FILE", O_RDONLY); /* Join that namespace */ setns(fd, 0); ``` ---- ``` PATH FILESYSTEM / /dev/sda1 ├── dev ├── proc ├── sys ├── usr └── var ├── cntrs │   ├── toto /dev/sda5 │   │   ├── dev │   │   ├── proc │   │   ├── sys │   │   └── usr │   └── virli /dev/sda6 │   ├── dev │   ├── proc │   ├── sys │   └── usr ├── log └── tmp ``` ### Système de fichiers * `pivot_root(2)` * Union FileSystems * Thin provisioning ---- TODO une image pour expliquer UnionFS ### Le réseau ... ![](sosreseau.jpg) ### Le réseau ... #### Interface physique Facile ! Mais il en faut beaucoup. . . . #### VLAN Un tag par conteneur. Routage *interne* par le switch en amont. . . . #### MAC-VLAN * **VEPA :** tous les paquets sortants sortent, y compris ceux à destination d'une autre machine locale. Le switch derrière doit rerouter les paquets vers la machine. * **Bridge :** le noyau analyse les paquets avant de les transmettre. . . . #### Virtual Ethernet Interfaces virtuelles connectées à un bridge. ## En résumé ### Mais ! (il y a toujours un mais) . . . #### LXC stable Prêt pour la production depuis février 2014. Attention à la configuration et aux erreur avec les `capabilities` ! . . . #### Partage des systèmes de fichiers Optimise l'utilisation du cache du système de fichiers :-) . . . N'optimise pas le travail de l'administrateur système :-(