virli/slides/containers.md

168 lines
2.6 KiB
Markdown
Raw Normal View History

2015-09-28 00:23:15 +00:00
# Voyage par conteneur
## Made in Unix
### Que doit-on isoler ?
2015-09-28 20:31:53 +00:00
> * Matériel ?
> * Processus ?
> * Réseau ?
> * Système de fichiers ?
> * Utilisateurs et groupes ?
> * Nom et domaine de la machine !
> * IPC !
> * Horloge ?
2015-09-28 00:23:15 +00:00
## Made in Linux
### Pour cette mission, vous disposerez de ...
2015-09-30 03:05:14 +00:00
![](armory.jpg)
2015-09-28 00:23:15 +00:00
----
#### 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.
2015-09-28 20:31:53 +00:00
`namespaces(7)`
2015-10-01 02:45:48 +00:00
. . .
2015-09-28 00:23:15 +00:00
#### CGroups
Statistiques sur l'utilisation des ressources et limitation.
2015-10-01 02:45:48 +00:00
<https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt>
. . .
2015-09-28 00:23:15 +00:00
#### Capabilities
Limitation de ce que `root` peut faire.
2015-09-28 20:31:53 +00:00
`capabilities(7)`
2015-09-28 00:23:15 +00:00
## pour les nuls
2015-09-29 19:34:30 +00:00
### Mais Jamy, comment ça marche ?
2015-09-28 00:23:15 +00:00
2015-09-30 03:05:14 +00:00
![](cps.jpg)
2015-09-29 19:34:30 +00:00
2015-09-30 03:05:14 +00:00
### Syscall
2015-09-29 19:34:30 +00:00
* `clone`
* `unshare`
* `setns`
. . .
2015-09-30 03:05:14 +00:00
#### Exemple
2015-09-29 19:34:30 +00:00
```c
int fd;
/* Get descriptor for namespace */
fd = open("/proc/PID/ns/FILE", O_RDONLY);
/* Join that namespace */
setns(fd, 0);
```
2015-09-28 00:23:15 +00:00
----
2015-09-29 19:34:30 +00:00
```
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
```
2015-09-28 00:23:15 +00:00
2015-09-30 03:05:14 +00:00
### Système de fichiers
* `pivot_root(2)`
* Thin provisioning
2015-10-01 02:45:48 +00:00
* Union FileSystems
2015-09-30 03:05:14 +00:00
2015-10-01 02:45:48 +00:00
### Union FileSystem
2015-09-30 03:05:14 +00:00
2015-10-01 02:45:48 +00:00
![](unionfs.png)
2015-09-30 03:05:14 +00:00
2015-09-28 00:23:15 +00:00
### Le réseau ...
2015-09-30 03:05:14 +00:00
![](sosreseau.jpg)
2015-09-28 00:23:15 +00:00
2015-09-29 19:34:30 +00:00
### Le réseau ...
2015-09-28 00:23:15 +00:00
#### Interface physique
Facile ! Mais il en faut beaucoup.
2015-09-29 19:34:30 +00:00
. . .
#### VLAN
2015-09-30 03:05:14 +00:00
Un tag par conteneur. Routage *interne* par le switch en amont.
2015-09-29 19:34:30 +00:00
. . .
2015-09-28 00:23:15 +00:00
#### 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.
2015-09-29 19:34:30 +00:00
. . .
2015-09-28 00:23:15 +00:00
#### Virtual Ethernet
Interfaces virtuelles connectées à un bridge.
## En résumé
### Mais ! (il y a toujours un mais)
. . .
#### LXC stable
2015-09-29 19:34:30 +00:00
Prêt pour la production depuis février 2014.
2015-09-28 00:23:15 +00:00
2015-09-29 19:34:30 +00:00
Attention à la configuration et aux erreur avec les `capabilities` !
2015-09-28 00:23:15 +00:00
. . .
#### Partage des systèmes de fichiers
2015-09-29 19:34:30 +00:00
Optimise l'utilisation du cache du système de fichiers :-)
2015-09-28 00:23:15 +00:00
. . .
N'optimise pas le travail de l'administrateur système :-(