2020 done

This commit is contained in:
nemunaire 2020-09-14 15:46:13 +02:00
parent fafac06b23
commit a75f4b43b7
25 changed files with 113 additions and 2498 deletions

Binary file not shown.

View file

@ -1,220 +0,0 @@
[file]
1-docker's basis.pdf
[skip]
4,5,6,7,8,10,11,12,13,18,21,22,23,29,30,36,37,38,
[end_user_slide]
22
[notes]
### 1
Après la piscine, on reste dans un thème aquatique, puisqu'on va parler de Docker aujourd'hui !
Sondage de repérage
* Qui a déjà entendu parlé de Docker ?
* Qui a déjà utilisé au moins une fois ?
* Est-ce que certain l'utilisent tous les jours ou presque ?
C'est vrai qu'une fois compris les principes, peut plus s'en passer.
* qqn déjà essayé un autre programme de virli ?
Pour les autres,
on va p-e commencer par expliquer ce que c'est, la virli.### 2
Déjà, la virtualisation ...
* La virtualisation classique
** gros serveur répondre pic de trafic quotidient, passe son temps à rien faire hors de ce pic => besoin d'optim
** Déploiement fastidieux de services concurrent (ex. un serveur web) :
- partager le port = partager la config
- reverse proxy : ok tant que c'est deux soft différents
- installation en parallèle de deux versions différentes hasardeuses et complexe
** Création du principe de machine virtuelle
- émulation du matériel
- gain en terme de sécu
** Aidé des instructions de virtualisation
- le matériel reste émulé, mais prends des raccourcis lorsque supporté par l'hôte et l'invité (virtio)
### 3
* Quelles sont les grandes étapes de boot d'une machine moderne ?
ground PS_ON, reset CPU, bootloader (BIOS/UEFI), chargeur d'amorce (GRUB, ...), noyau de l'OS, espace utilisateur (init, systemd, ...), daemons et applications utilisateur (logind, Xorg, ...)
* différences avec une machine virtuelle
- création d'un espace d'adressage
- vmenter
* Optimisation du reboot ?
* Pas encore très léger comme virtualisation
on veut pas vraiment des multiples noyaux et système, simplement pour un daemon qui écoute sur une autre IP
* Virtualisation légère : le noyau peut isoler des systèmes différents
- On a plus que l'espace utilisateur à recharger
- Plein de technos font ça : OpenVZ, LXC, ...
DEMO LXC VPS
* C'est mieux, mais on a encore des éléments inutiles : cron, init, ...
=> Et si on lançait uniquement notre deamon ?
DEMO docker owncloud, telegraf/graphana/... SRS FIC ?
* pub pour les cours 3 et 4 sur Linux Internals : NS + cg
### 4
* Scheduling simplifié
* RAM mieux utilisée
- kernel unique
- libc partagées
- cache de fichiers unique (s'adapte à l'espace restant)
### 5
* Acteurs historiques
- Zones Solaris
- Jails BSD
- OpenVZ
* Arnaques
- Docker4mac
- Docker4windows
Microsoft Hyper-V
Windows 10 Pro 64 bits
* En développement/test
- Windows Containers
Windows Server 2016
Windows 10 Anniversary Edition
### 6
Questions ?
### 7
DAEMON
* REST API
* qui gère des Docker objects
- images, conteneurs, services
- réseaux, nœux de cluster
- volumes
* local registry
* containerd/runc
CLIENT
Open Container Initiative
Docker hub/store
### 8
Image
* Modèle en lecture seule
* utilisé pour pour créer les conteneurs
Conteneur
* Instance d'une image
* isolé de tout de base, on règle après ce que l'on souhaite partager (réseau, stockage, ...)
Services
* groupe de conteneurs qui forme une application
### 9
Démo
docker run touch /toto
voir que dans un autre docker run, ls / ne montre pas foo
### 10
Commence par regarder en local si on a pas l'image
Ensuite il va interroger son registre par défaut, sans configuration, il s'agit du Docker Store.
Si l'on désucre le nom du conteneur, on obtient ce chemin
Le but de Docker étant de récupérer un fichier manifests
On utilise la forme complètement quand on a un registre privé
### 11
Parler de l'ancienne syntaxe toujours d'actualité, mais beaucoup plus documentée
### 12
Démo
docker image ls
docker image rm
docker container ls
docker container rm
docker container create
### 13
Comment fait-on pour créer une image ?
On va pouvoir créer une image (qui pourra donc servir de modèle pour créer d'autre cntr) à partir d'un conteneur que l'on décidera de figer à un instant donné.
=> docker commit
On indique lors du commit le conteneur à figer ainsi que lenom de l'image que l'on souhaite créer.### 14
* CoW
* layers/couches (docker image history IMAGE)
* unionfs
### 15
Maintenant, comment faire en sorte que deux conteneur puissent se parler ?
On commence par lancer deux cntrs. et l'on demande explicitement à ce que le compteur nous expose son port 80.
--
On crée ensuite un objet Docker network, dans lequel on vient placer nos deux conteneurs.
Ils peuvent alors se parler.
--
Mieux encore, un serveur DNS permet de résoudre le nom des conteneurs dans ce réseau, pour simplifier la configuration.
Si trop de temps :
docker container run -P nginx
docker container ls
docker container port $ID
go with firefox
### 16
On utilisé juste avant docker commit pour créer une nouvelle image à partir d'un conteneur. Mais on peut aussi utiliser ce qu'on appel des Dockerfile.
- fichier texte
- instructions de base : FROM, RUN, COPY, CMD
DEMO hello srs 1
- passage du contexte au daemon
- .dockerignore
- cache de construction
- bonnes pratiques à propos des installs :
- minimise le nombre de couches
faire la part des choses entre relecture/maintenabilité et nombre de couches
### 17
Dockerfile hello srs
À propos du linkage statique vs. dynamique
### 18
chaque ligne est exécutée dans un conteneur distinct
les commandes ne servent qu'à modifier le système de fichier
on ne peut pas lancer un programme, il sera fermé avec le conteneur
- bonnes pratiques à propos des installs :
- pas d'upgrade
- on clean les couches
### 19
Lorsqu'on a besoin de compiler un programme avant de le mettre dans un conteneur, pas besoin d'inclure le compilateur !
### 20
* volumes : une couche simple
* bind mounts : partagés avec l'hôte
* volume-from : partage de volumes entre conteneurs
* tmpfs mounts : non persistant, uniquement dans la mémoire de l'hôte
### 21
Questions ?
- limiter les ressources
- arrêter un conteneur
- commandes détachées du terminal (-d) + docker logs
### 22
* Questionnaire sur Epitaf sur les notions de cours + recherches perso (pour éviter un partiel)
* Demandez pour un partage de flux intéressants, d'articles cools sur le sujet, ...
* Rendus des exercices du TP + projet complémentaire par mail
- signature PGP
* Correction au début du prochain cours => limite du rendu
* Sondage de satisfaction à la fin du cours : notez vos feedbacks !

Binary file not shown.

View file

@ -1,146 +0,0 @@
[file]
2-docker advanced.pdf
[skip]
8,11,12,13,14,17,18,21,23,24,
[notes]
### 1
Bonjour, aujourd'hui, on va continuer de découvrir Docker, et plus particulièrement : ce qui touche à l'orchestration.
Ça va, vous vous en êtes sorti avec le petit projet ?
C'est le dernier cours que l'on va faire sur Docker, donc le projet est un peu plus long.### 2
Normalement, vous aviez des questions de cours à préparer sur Epitaf, on fera sans et on trouvera une solution pour la prochaine fois.
Du coup, peut-être que je vais donner plein de réponses durant ce cours, vous avez bien fait de venir y assister !
Commençons par faire un point sur les signatures PGP ....### 3
Quelques statistiques qui parlent d'elles-même : seulement 7 d'entre-vous ont réussi à envoyer un mail sans se tromper. Bravo !
2 d'entre vous ne comprennent pas le fonctionnement des bi-clefs.
=> pour signer, on chiffre un condensat du mail avec ... ? clef privée, pour que n'importe qui possédant la clef publique puisse faire l'op inverse
=> pour chiffrer, on chiffre la clef de chiffrement symét. avec ... ? clef pub. du destinataire, car seule la clef privée pourra le déchiffrer.
Quels sont les algo qui fonctionnent comme ça ? RSA, et puis ?
=> ECDSA, ED25519, ...
À propos de RSA, qui peut m'expliquer la vulnérabilité découverte lundi ?
ROCA, Infineon, nitrokey 4, carte d'identitée estonienne, ...
=====
Sylvio, qui m'a envoyé son certificat de révocation, à quoi ça sert un certif de révocation ?### 4
Vous avez globalement tous eu du mal à partager votre clef publique.
Le plus simple était sans doute de l'envoyer sur un serveur de clef...### 5
Si vous aimez la sécurité, venez rencontrer des gens dans les cryptoparties !
La prochaine chez Mozilla est annuelle, sur inscription et va ameuter beaucoup de monde.
Tous les mois, aux Halles, on parle sécurité informatique pendant 1h, en signant les gens qui viennent que ce soit PGP ou CAcert
Et plein d'autres événements organise souvent en parallèle des KSP### 6
Est-ce que vous voulez savoir comment on signe une clef PGP ?
C'est un réseau de confiance, vous êtes entièrement responsable de la manière dont vous gérez votre réseau.
Vous pouvez signer n'importe qui sans faire de vérification.
Ce qui importe, c'est la confiance qu'on accorde aux gens que l'on signe. Est-ce que l'on souhaite leur accorder notre confiance pour étendre notre réseau ou pas ?
Une signature, ça se fait toujours en face à face. Avec une ou deux pièces d'identitées dont on sait valider l'authenticité.
Lorsque l'on valide la clef sur sa machine, il faut vérifier chaque chiffre de l'empreinte.
Les bonnes pratiques veulent que l'on renvoie la clef signée à son propriétaire qui choisi de publier ou non la signature.
Problème des métadonnées : cela expose nos connaissances### 7
Il y avait une question sur Epitaf pourtant sur le nombre de couches que possédait votre image web server.
Ici donc, 4.
Comment on peut afficher explicitement le nombre de couches ?### 8
Une autre question qui était posée :
Est-ce que c'est mieux en haut où en bas ?
1 RUN = 1 couche
FROM plus précis en haut : ça a plus de chance de perdurer dans le temps
RUN inutile en bas, car la suppression ne supprimera pas les fichiers des couches précédentes### 9
Est-ce que certains d'entre vous ont creusé pour savoir comment effectuer une action privilégiée sans être root, uniquement via Docker ?
--privileged
monté un volume de la racine et chroot dedans
utiliser le réseau de l'hote pour changer les interfaces
s'ajouter quelques capabilities sympa (on y reviendra la semaine prochaine)
seccomp : mécanisme de filtrage des syscall :
- soit liste blanche,
- soit liste noire.
Par défaut Docker : retire beaucoup de capabilities et limite les appels système, en particulier aux mécanismes qui ne sont pas isolés.### 10
DEMO nanosleep### 11
Pendant qu'on parle sécu, avez-vous regardé comment limiter l'usage CPU ou RAM avec Docker ?
CPU shares, n'est actif que si le CPU est à 100%, dans ce cas, le conteneur ne pourra s'en octroyer que la moitié au maximum par rapport aux autres processus.
Memory, facile, on peut aussi l'appliquer à la swap dans les versions récentes du noyau
PID limit, noyau récent aussi, on fait un test ?!
### 12
DEMO fork-bomb controlé### 13
Voici le script qu'il fallait écrire, en gros, pour lancer owncloud
On crée un volume pour la base de données
On lance la base de données avec ce volume et le pass root dans l'env
On crée un volume pour les données owncloud (dit dans le readme du cntr)
On lance le conteneur lié au mysql => il hérite de l'env
Enfin, on fait un coup de docker inspect, format template Golang et voilà
=====
Je parlais de docker-compose, vous avez jeté un œil du coup ? c'est le sujet du TP aujourd'hui !
Voilà à quoi ça ressemble donc. on déclare des services, en YAML, et on les décrits : quels images, comment les builds, quelle politique de restart appliquer, quels ports exposer, comment les lier
DEMO un vrai ....### 14
Image
* modèle en lecture seule
* utilisé pour créer des conteneurs
Conteneur
* instance d'une image
* isolé de tout de base, on règle après ce que l'on souhaite partager (réseau, stockage, ...)
Tâche (à partir d'un cluster)
* une instance d'une image qui tourne pour un conteneur
* propriétés très similaire aux conteneurs
Service (à partir d'un cluster)
* un groupe de tâches partageant la même image
Stack (à partir d'un cluster)
* un groupe de services, différents, formant un projet avec tous ses composants.### 15
De plus en plus de nos jours, on a besoin de faire de l'orchestration :
- bcp de serveur
- bcp de conteneur
aux carac. différentes
=> certain + RAM, d'autre + CPU, + disque, ...
Faire la répartition à la main, n'est plus possible.
Mesos, Nomad, Kubernetes, Swarm, ...
Pendant le TP, on va passer un peu de temps sur Swarm.
À savoir qu'actuellement:
Les bases de données ça se clusterise pas bien pour l'instant.### 16
Dockerfile hello srs
À propos du linkage statique vs. dynamique### 17
### 18
C'est parti pour le TP !
Parler un peu des serveurs du FIC ?

Binary file not shown.

View file

@ -1,4 +0,0 @@
[file]
4-linux internals.pdf
[skip]
5,8,9,10,11,12,14,