virli/slides/1-docker's basis.pdfpc
2017-11-22 03:35:40 +01:00

220 lines
6.3 KiB
Plaintext

[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 !