virli/tutorial/docker-internals/runc.md

1.6 KiB

\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 ;
  • ...