virli/slides/containers.md

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 :-(