virli/tutorial/docker-internals/runc.md

38 lines
1.6 KiB
Markdown

\newpage
https://ops.tips/blog/run-docker-with-forked-runc/
`runc`
======
`runc` est le programme qui est responsable de la création effective du conteneur : c'est lui qui va mettre en place les *namespaces*, les *capabilities*, les points de montages ou volumes, ... Attention, son rôle reste limité à la mise en place de l'environnement conteneurisé, ce n'est pas lui qui télécharge l'image, ni fait l'assemblage des couches de système de fichiers, entre autres.
Si vous n'avez pas eu le temps de terminer l'exercice précédent, vous pouvez utiliser `docker export | tar -C rootfs xv`.
On va essayer de lancer un shell `alpine` avec un volume dans notre home :)
D'abord on extraie l'image avec le script précédent, puis on crée le fichier de conf qui va bien.
Aujourd'hui, la création de conteneur est faite avec `runc`, mais il est parfaitement possible d'utiliser n'importe quel autre programme, à la place de `runc`, à partir du moment où il expose la même interface à Docker et qu'il accepte les bundle OCI.
https://github.com/opencontainers/runtime-spec/blob/master/config.md
https://hackernoon.com/docker-containerd-standalone-runtimes-heres-what-you-should-know-b834ef155426
## Exercice
Réaliser un `config.json` qui permette de lancer le conteneur `nemunaire/fic-admin`.
## Exercice
Serez-vous capable d'écrire un fichier `config.json` permettant d'obtenir le
même résultat que votre projet de moulette ?
* CGroups : 1GB RAM, 100 PID, ...
* strict minimum de capabilities ;
* volume étudiant pour correction ;
* carte réseau `veth` ;
* ...