virli/slides/containers.md
2015-10-06 23:27:45 +02:00

168 lines
2.6 KiB
Markdown

# 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 ?
## 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)`
* Thin provisioning
* Union FileSystems
### Union FileSystem
![](unionfs.png)
### 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 :-(