Start working on TP5: docker-internals

This commit is contained in:
nemunaire 2018-11-13 05:39:04 +01:00
parent 43adef5c17
commit e1b1f8e1b3
8 changed files with 169 additions and 0 deletions

View File

@ -0,0 +1,25 @@
SOURCES = tutorial.md setup.md oci.md manifest.md runc.md linuxkit.md vxlan.md rendu.md
PANDOCOPTS = --latex-engine=xelatex \
--standalone \
--normalize \
--number-sections \
--smart \
-M lang=fr-FR \
-M fontsize=12pt \
-M papersize=a4paper \
-M mainfont="Linux Libertine O" \
-M monofont="FantasqueSansMono-Regular" \
-M sansfont="Linux Biolinum O" \
-M colorlinks=true \
-M linkcolor="black" \
-M urlcolor="[rgb]{0.2,0.6,0.4}" \
--include-in-header=../header.tex
all: tutorial.pdf
tutorial.pdf: ${SOURCES}
pandoc ${PANDOCOPTS} -o $@ $+
clean::
rm tutorial.pdf

View File

@ -0,0 +1,12 @@
\newpage
`linuxkit`
==========
Exemple avec une machine qui fait office de serveur DNS.
Lien vers le fickit
## Exercice
Réaliser une recette `vault.yml` permettant de démarrer une instance.

View File

@ -0,0 +1,14 @@
\newpage
Open Container Initiative
=========================
Formée en juin 2015, l'Open Container Initiative (OCI) a pour but d'établir le
standard commun aux programmes de contenerisation, afin d'éviter une
fragmentation de l'écosystème.
Trois spécifications ont été écrites :
- [`runtime-spec`](https://github.com/opencontainers/runtime-spec/blob/master/spec.md#platforms): défini la manière dont un conteneur est lancé ;
- [`image-spec`](https://github.com/opencontainers/image-spec/blob/master/spec.md): défini la construction, le transport et la préparation des images ;
- [`distribution-spec`](https://github.com/opencontainers/distribution-spec/blob/master/spec.md): défini la manière dont sont partagées et récupérées les images.

View File

@ -0,0 +1,41 @@
\newpage
Rendu
=====
Modalités de rendu
------------------
En tant que personnes sensibilisées à la sécurité des échanges électroniques,
vous devrez m'envoyer vos rendus signés avec votre clef PGP.
Un service automatique s'occupe de réceptionner vos rendus, de faire des
vérifications élémentaires et de vous envoyer un accusé de réception (ou de
rejet).
Ce service écoute sur l'adresse <virli@nemunai.re>, c'est donc à cette adresse
et exclusivement à celle-ci que vous devez envoyer vos rendus. Tout rendu
envoyé à une autre adresse et/ou non signé et/ou reçu après la correction ne
sera pas pris en compte.
Tarball
-------
Tous les fichiers identifiés comme étant à rendre pour ce TP sont à
placer dans une tarball (pas d'archive ZIP, RAR, ...).
Voici une arborescence type (vous pourriez avoir des fichiers supplémentaires,
cela dépendra de votre avancée dans le projet) :
<div lang="en-US">
```
login_x-TP5/
login_x-TP5/mydocker-export.sh
login_x-TP5/config.json
login_x-TP5/unboundkit.yml
login_x-TP5/vault.yml
```
</div>
Utilisez la même tarball pour le rendu que pour la partie précédente.

View File

@ -0,0 +1,37 @@
\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` ;
* ...

View File

@ -0,0 +1,10 @@
\newpage
Mise en place
=============
* `jq`
* `runc`
* `containerd`
* `ctr`
* `linuxkit`

View File

@ -0,0 +1,22 @@
---
title: Virtualisation légère -- TP n^o^ 5
subtitle: Docker Internals
author: Pierre-Olivier *Nemunaire* Mercier
institute: EPITA
date: Mercredi 14 novembre 2018
...
Dans ce cinquième du TP, nous allons entrer dans les sous-bassements de Docker !
Tous les éléments de ce TP (exercices et projet) sont à rendre à
<virli@nemunai.re> au plus tard le dimanche 25 novembre 2018 à 23 h 42. Consultez la
dernière section de chaque partie pour plus d'information sur les éléments à
rendre.
En tant que personnes sensibilisées à la sécurité des échanges électroniques,
vous devrez m'envoyer vos rendus signés avec votre clef PGP. Pensez à
[me](https://pgp.mit.edu/pks/lookup?op=vindex&search=0x842807A84573CC96) faire
signer votre clef et n'hésitez pas à
[faire signer votre clef](https://www.meetup.com/fr/Paris-certification-de-cles-PGP-et-CAcert/).
\tableofcontents

View File

@ -0,0 +1,8 @@
\newpage
VxLAN
=====
https://blog.wescale.fr/2018/02/15/les-reseaux-doverlay-principes-et-fonctionnement/
https://vincent.bernat.ch/fr/blog/2017-vxlan-linux