2.6 KiB
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 ...
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 ?
Syscall
clone
unshare
setns
. . .
Exemple
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
Le réseau ...
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 :-(