FORMATION DOCKER - particule
Transcript of FORMATION DOCKER - particule
![Page 1: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/1.jpg)
FORMATION DOCKER
1
![Page 2: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/2.jpg)
CONCERNANT CES SUPPORTS DE COURS
2 . 1
![Page 3: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/3.jpg)
SUPPORTS DE COURS RÉALISÉS PAR PARTICULE
ex Expertise Cloud NativeExpertise DevOpsNos offres de formations:
Sources : HTML/PDF :
Osones/Alterway
https://particule.io/trainings/https://github.com/particuleio/formations/
https://particule.io/formations/
2 . 2
![Page 4: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/4.jpg)
COPYRIGHT
Licence : Copyright © 2014-2019 alter way Cloud ConsultingCopyright © 2020 particule.Depuis 2020, tous les commits sont la propriété deleurs auteurs respectifs
Creative Commons BY-SA 4.0
2 . 3
![Page 5: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/5.jpg)
LE CLOUD : VUE D’ENSEMBLE
3 . 1
![Page 6: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/6.jpg)
LE CLOUD, C’EST LARGE !
Stockage/calcul distant (on oublie, cf. externalisation)
Virtualisation++
Abstraction du matériel (voire plus)
Accès normalisé par des APIs
Service et facturation à la demande
Flexibilité, élasticité
3 . 2
![Page 7: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/7.jpg)
WAAS : WHATEVER AS A SERVICE
IaaS : Infrastructure as a Service
PaaS : Platform as a Service
SaaS : Software as a Service
3 . 3
![Page 8: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/8.jpg)
LE CLOUD EN UN SCHÉMA
3 . 4
![Page 9: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/9.jpg)
POURQUOI DU CLOUD ? CÔTÉ TECHNIQUE
Abstraction des couches basses
On peut tout programmer à son gré (API)
Permet la mise en place d’architectures scalables
3 . 5
![Page 10: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/10.jpg)
VIRTUALISATION DANS LE CLOUD
Le cloud IaaS repose souvent sur la virtualisation
Ressources compute : virtualisation
Virtualisation complète : KVM, Xen
Virtualisation conteneurs : OpenVZ, LXC, Docker, RKT
3 . 6
![Page 11: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/11.jpg)
NOTIONS ET VOCABULAIRE IAAS
L’instance est par définition éphémère
Elle doit être utilisée comme ressource de calcul
Séparer les données des instances
3 . 7
![Page 12: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/12.jpg)
ORCHESTRATION DES RESSOURCES ?
Groupement fonctionnel de ressources : microservices
Infrastructure as Code : Définir toute uneinfrastructure dans un seul fichier texte de manièredéclarative
Scalabilité : passer à l'échelle son infrastructure enfonction de différentes métriques.
3 . 8
![Page 13: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/13.jpg)
POSITIONNEMENT DES CONTENEURS DANS L'ÉCOSYSTÈME CLOUD ?
Facilitent la mise en place de PaaS
Fonctionnent sur du IaaS ou sur du bare-metal
Simplifient la décomposition d'applications en microservices
3 . 9
![Page 14: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/14.jpg)
LES CONTENEURS
4 . 1
![Page 15: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/15.jpg)
DÉFINITION
Les conteneurs fournissent un environnement isolésur un système hôte, semblable à un chroot sousLinux ou une jail sous BSD, mais en proposant plusde fonctionnalités en matière d'isolation et deconfiguration. Ces fonctionnalités sont dépendantesdu système hôte et notamment du kernel.
4 . 2
![Page 16: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/16.jpg)
LE KERNEL LINUX
Namespaces
Cgroups (control groups)
4 . 3
![Page 17: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/17.jpg)
LES NAMESPACES
4 . 4
![Page 18: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/18.jpg)
MOUNT NAMESPACES ( LINUX 2.4.19)
Permet de créer un arbre des points de montageindépendants de celui du système hôte.
4 . 5
![Page 19: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/19.jpg)
UTS NAMESPACES (LINUX 2.6.19)
Unix Time Sharing : Permet à un conteneur dedisposer de son propre nom de domaine et d’identitéNIS sur laquelle certains protocoles tel que LDAPpeuvent se baser.
4 . 6
![Page 20: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/20.jpg)
IPC NAMESPACES (LINUX 2.6.19)
Inter Process Communication : Permet d’isoler lesbus de communication entre les processus d’unconteneur.
4 . 7
![Page 21: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/21.jpg)
PID NAMESPACES (LINUX 2.6.24)
Isole l’arbre d’exécution des processus et permetdonc à chaque conteneur de disposer de son propreprocessus maître (PID 0) qui pourra ensuite exécuteret manager d'autres processus avec des droitsillimités tout en étant un processus restreint au seindu système hôte.
4 . 8
![Page 22: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/22.jpg)
USER NAMESPACES (LINUX 2.6.23-3.8)
Permet l’isolation des utilisateurs et des groupes ausein d’un conteneur. Cela permet notamment degérer des utilisateurs tels que l’UID 0 et GID 0, le rootqui aurait des permissions absolues au sein d’unnamespace mais pas au sein du système hôte.
4 . 9
![Page 23: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/23.jpg)
NETWORK NAMESPACES (LINUX 2.6.29)
Permet l’isolation des ressources associées au réseau,chaque namespace dispose de ses propres cartesréseaux, plan IP, table de routage, etc.
4 . 10
![Page 24: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/24.jpg)
CGROUPS : CONTROL CROUPSCGroup: / |--docker | |--7a977a50f48f2970b6ede780d687e72c0416d9ab6e0b02030698c1633fdde956 | |--6807 nginx: master process ngin | | |--6847 nginx: worker proces
4 . 11
![Page 25: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/25.jpg)
CGROUPS : LIMITATION DE RESSOURCES
Limitation des ressources : des groupes peuvent êtremis en place afin de ne pas dépasser une limite demémoire.
4 . 12
![Page 26: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/26.jpg)
CGROUPS : PRIORISATION
Priorisation : certains groupes peuvent obtenir uneplus grande part de ressources processeur ou debande passante d'entrée-sortie.
4 . 13
![Page 27: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/27.jpg)
CGROUPS : COMPTABILITÉ
Comptabilité : permet de mesurer la quantité deressources consommées par certains systèmes, envue de leur facturation par exemple.
4 . 14
![Page 28: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/28.jpg)
CGROUPS : ISOLATION
Isolation : séparation par espace de nommage pourles groupes, afin qu'ils ne puissent pas voir lesprocessus des autres, leurs connexions réseaux ouleurs fichiers.
4 . 15
![Page 29: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/29.jpg)
CGROUPS : CONTRÔLE
Contrôle : figer les groupes ou créer un point desauvegarde et redémarrer.
4 . 16
![Page 30: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/30.jpg)
DEUX PHILOSOPHIES DE CONTENEURS
Systeme : simule une séquence de boot complèteavec un init process ainsi que plusieurs processus(LXC, OpenVZ).Process : un conteneur exécute un ou plusieursprocessus directement, en fonction de l'applicationconteneurisée (Docker, Rkt).
4 . 17
![Page 31: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/31.jpg)
ENCORE PLUS “CLOUD” QU’UNE INSTANCE
Partage du kernel
Un seul processus par conteneur
Le conteneur est encore plus éphémère quel’instance
Le turnover des conteneurs est élevé : orchestration
4 . 18
![Page 32: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/32.jpg)
CONTAINER RUNTIME
Permettent d'exécuter des conteneurs sur un système
docker: historique
containerd: implémentation de référence
cri-o: implémentation Open Source développée parRedHat
kata containers: Conteneurs dans des VMs
4 . 19
![Page 33: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/33.jpg)
LES CONTENEURS: CONCLUSION
Fonctionnalités offertes par le Kernel
Les conteneurs engine fournissent des interfacesd'abstraction
Plusieurs types de conteneurs pour différents besoins
4 . 20
![Page 34: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/34.jpg)
LES CONCEPTS
5 . 1
![Page 35: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/35.jpg)
UN ENSEMBLE DE CONCEPTS ET DE COMPOSANTS
Layers
Stockage
Volumes
Réseau
Publication de ports
Service Discovery
5 . 2
![Page 36: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/36.jpg)
LAYERS
Les conteneurs et leurs images sont décomposés encouches (layers)
Les layers peuvent être réutilisés entre différentsconteneurs
Gestion optimisée de l'espace disque.
5 . 3
![Page 37: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/37.jpg)
LAYERS : UNE IMAGE
Une image se decompose en layers
5 . 4
![Page 38: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/38.jpg)
LAYERS : UN CONTENEUR
Une conteneur = une image + un layer r/w
5 . 5
![Page 39: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/39.jpg)
LAYERS : PLUSIEURS CONTENEURS
Une image, plusieurs conteneurs
5 . 6
![Page 40: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/40.jpg)
LAYERS : RÉPÉTITION DES LAYERS
Les layers sont indépendants de l'image
5 . 7
![Page 41: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/41.jpg)
STOCKAGE
Images Docker, données des conteneurs, volumes
Multiples backends (extensibles via plugins):AUFSDeviceMapperOverlayFSNFS (via plugin Convoy)GlusterFS (via plugin Convoy)
5 . 8
![Page 42: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/42.jpg)
STOCKAGE : AUFS
A unification filesystem
Stable : performance écriture moyenne
Non intégré dans le Kernel Linux (mainline)
5 . 9
![Page 43: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/43.jpg)
STOCKAGE : DEVICE MAPPER
Basé sur LVM
Thin Provisionning et snapshot
Intégré dans le Kernel Linux (mainline)
Stable : performance écriture moyenne
5 . 10
![Page 44: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/44.jpg)
STOCKAGE : OVERLAYFS
Successeur de AUFS
Performances accrues
Relativement stable mais moins éprouvé que AUFSou Device Mapper
5 . 11
![Page 45: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/45.jpg)
STOCKAGE : PLUGINS
Étendre les drivers de stockages disponibles
Utiliser des systèmes de fichier distribués (GlusterFS)
Partager des volumes entre plusieurs hôtes docker
5 . 12
![Page 46: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/46.jpg)
VOLUMES
Assurent une persistance des données
Indépendance du volume par rapport au conteneuret aux layers
Deux types de volumes :Conteneur : Les données sont stockées dans ceque l'on appelle un data conteneurHôte : Montage d'un dossier de l'hôte dockerdans le conteneur
Partage de volumes entre plusieurs conteneurs
5 . 13
![Page 47: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/47.jpg)
VOLUMES : EXEMPLE
Un volume monté sur deux conteneurs5 . 14
![Page 48: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/48.jpg)
VOLUMES : PLUGINS
Permettre le partage de volumes entre differentshôtes
Fonctionnalité avancées : snapshot, migration,restauration
Quelques exemples:Convoy : multi-host et multi-backend (NFS,GlusterFS)Flocker : migration de volumes dans un cluster
5 . 15
![Page 49: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/49.jpg)
RÉSEAU : A LA BASE, PAS GRAND CHOSE...NETWORK ID NAME DRIVER42f7f9558b7a bridge bridge6ebf7b150515 none null0509391a1fbd host host
5 . 16
![Page 50: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/50.jpg)
RÉSEAU : BRIDGE
5 . 17
![Page 51: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/51.jpg)
RÉSEAU : HOST
5 . 18
![Page 52: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/52.jpg)
RÉSEAU : NONE
Explicite
5 . 19
![Page 53: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/53.jpg)
RÉSEAU : LES ÉVOLUTIONS
Refactorisation des composants réseau (libnetwork)
Système de plugins : multi host et multi backend(overlay network)
Quelques exemples d'overlay :Flannel : UDP et VXLANWeave : VXLAN
5 . 20
![Page 54: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/54.jpg)
RÉSEAU : MULTIHOST OVERLAY
5 . 21
![Page 55: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/55.jpg)
PUBLICATION DE PORTS
Dans le cas d'un réseau diffèrent de l'hôte
Les conteneurs ne sont pas accessible depuisl'extérieur
Possibilité de publier des ports depuis l'hôte vers leconteneur (iptables)
L'hôte sert de proxy au service
5 . 22
![Page 56: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/56.jpg)
PUBLICATION DE PORTS
5 . 23
![Page 57: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/57.jpg)
LINKS
Les conteneurs d'un même réseau peuventcommuniquer via IP
Les liens permettent de lier deux conteneurs parnom
Système de DNS rudimentaire (/etc/hosts)
Remplacés par les discovery services
5 . 24
![Page 58: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/58.jpg)
LES CONCEPTS: CONCLUSION
Les composants de Docker sont modulaires
Nombreuses possibilités offertes par défaut.
Possibilité d'étendre les fonctionnalités via desplugins
5 . 25
![Page 59: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/59.jpg)
BUILD, SHIP AND RUN !
6 . 1
![Page 60: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/60.jpg)
BUILD
6 . 2
![Page 61: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/61.jpg)
LE CONTENEUR ET SON IMAGE
Flexibilité et élasticité
Format standard de facto
Instanciation illimitée
6 . 3
![Page 62: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/62.jpg)
CONSTRUCTION D'UNE IMAGE
Possibilité de construire son image à la main (long etsource d'erreurs)
Suivi de version et construction d'images de manièreautomatisée
Utilisation de Dockerfile afin de garantirl'idempotence des images
6 . 4
![Page 63: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/63.jpg)
DOCKERFILE
Suite d'instruction qui définit une image
Permet de vérifier le contenu d'une image
FROM alpine:3.4MAINTAINER Particule <[email protected]>RUN apk -U add nginxEXPOSE 80 443CMD ["nginx"]
6 . 5
![Page 64: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/64.jpg)
DOCKERFILE : PRINCIPALES INSTRUCTIONS
FROM : baseimage utilisée
RUN : Commandes effectuées lors du build de l'image
EXPOSE : Ports exposées lors du run (si -P est précisé)
ENV : Variables d'environnement du conteneur àl'instanciation
CMD : Commande unique lancée par le conteneur
ENTRYPOINT : "Préfixe" de la commande uniquelancée par le conteneur
6 . 6
![Page 65: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/65.jpg)
DOCKERFILE : BEST PRACTICES
Bien choisir sa baseimage
Chaque commande Dockerfile génère un nouveaulayer
Comptez vos layers !
6 . 7
![Page 66: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/66.jpg)
DOCKERFILE : BAD LAYERINGRUN apk --update add \ git \ tzdata \ python \ unrar \ zip \ libxslt \ py-pip \
RUN rm -rf /var/cache/apk/*
VOLUME /config /downloads
EXPOSE 8081
CMD ["--datadir=/config", "--nolaunch"]
ENTRYPOINT ["/usr/bin/env","python2","/sickrage/SickBeard.py"]
6 . 8
![Page 67: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/67.jpg)
DOCKERFILE : GOOD LAYERINGRUN apk --update add \ git \ tzdata \ python \ unrar \ zip \ libxslt \ py-pip \ && rm -rf /var/cache/apk/*
VOLUME /config /downloads
EXPOSE 8081
CMD ["--datadir=/config", "--nolaunch"]
ENTRYPOINT ["/usr/bin/env","python2","/sickrage/SickBeard.py"]
6 . 9
![Page 68: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/68.jpg)
DOCKERFILE : DOCKERHUB
Build automatisée d'images Docker
Intégration GitHub / DockerHub
Plateforme de stockage et de distribution d'imagesDocker
6 . 10
![Page 69: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/69.jpg)
SHIP
6 . 11
![Page 70: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/70.jpg)
SHIP : LES CONTENEURS SONT MANIPULABLES
Sauvegarder un conteneur :
Exporter une image :
Importer un conteneur :
docker commit mon-conteneur backup/mon-conteneur
docker run -it backup/mon-conteneur
docker save -o mon-image.tar backup/mon-conteneur
docker import mon-image.tar backup/mon-conteneur
6 . 12
![Page 71: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/71.jpg)
SHIP : DOCKER REGISTRY
DockerHub n’est qu’au Docker registry ce queGitHub est à git
Pull and Push
Image officielle : registry
6 . 13
![Page 72: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/72.jpg)
RUN
6 . 14
![Page 73: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/73.jpg)
RUN : LANCER UN CONTENEUR
docker run
-d (detach)
-i (interactive)
-t (pseudo tty)
6 . 15
![Page 74: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/74.jpg)
RUN : BEAUCOUP D’OPTIONS...
-v /directory/host:/directory/container
-p portHost:portContainer
-P-e “VARIABLE=valeur”
--restart=always--name=mon-conteneur
6 . 16
![Page 75: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/75.jpg)
RUN : ...DONT CERTAINES UN PEU DANGEREUSES
--privileged (Accès à tous les devices)
--pid=host (Accès aux PID de l’host)
--net=host (Accès à la stack IP de l’host)
6 . 17
![Page 76: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/76.jpg)
RUN : SE “CONNECTER” À UN CONTENEUR
docker exec
docker attach
6 . 18
![Page 77: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/77.jpg)
RUN : DÉTRUIRE UN CONTENEUR
docker kill (SIGKILL)
docker stop (SIGTERM puis SIGKILL)
docker rm (détruit complètement)
6 . 19
![Page 78: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/78.jpg)
BUILD, SHIP AND RUN : CONCLUSIONS
Écosystème de gestion d'images
Construction automatisée d'images
Contrôle au niveau conteneurs
6 . 20
![Page 79: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/79.jpg)
ÉCOSYSTÈME DOCKER
7 . 1
![Page 80: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/80.jpg)
DOCKER INC.
Docker Inc != Docker Project
Docker Inc est le principal développeur du DockerEngine, Compose, Machine, Kitematic, Swarm etc.
Ces projets restent OpenSource et les contributionssont possibles
7 . 2
![Page 81: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/81.jpg)
OCI
Créé sous la Linux Fondation
But : Créer des standards OpenSource concernant lamanière de "runner" et le format des conteneurs
Non lié à des produits commerciaux
Non lié à des orchestrateurs ou des clientsparticuliers
runC a été donné par Docker à l'OCI comme basepour leurs travaux
7 . 3
![Page 82: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/82.jpg)
LES AUTRES PRODUITS DOCKER
7 . 4
![Page 83: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/83.jpg)
DOCKER-COMPOSE
Concept de stack
Infrastructure as a code
Scalabilité
7 . 5
![Page 84: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/84.jpg)
DOCKER-COMPOSE
docker-compose.ymlnginx: image: nginx ports: - "80:80" - "443:443" volumes: - "/srv/nginx/etc/sites-enabled:/etc/nginx/sites-enabled" - "/srv/nginx/etc/certs:/etc/nginx/certs" - "/srv/nginx/etc/log:/var/log/nginx" - "/srv/nginx/data:/var/www"
7 . 6
![Page 85: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/85.jpg)
DOCKER-MACHINE
"Metal" as a Service
Provisionne des hôtes Docker
Abstraction du Cloud Provider
7 . 7
![Page 86: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/86.jpg)
DOCKER SWARM
Clustering : Mutualisation d'hôtes Docker
Orchestration : placement intelligent des conteneursau sein du cluster
7 . 8
![Page 87: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/87.jpg)
AUTOUR DE DOCKER
Plugins : étendre les fonctionnalités notammentréseau et volumes
Systèmes de gestion de conteneurs (COE)
Docker as a Service :Docker CloudTutum
7 . 9
![Page 88: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/88.jpg)
ÉCOSYSTÈME DOCKER : CONCLUSION
Le projet Docker est Open Source et n'appartientplus à Docker
Des outils permettent d'étendre les fonctionnalitésde Docker
Docker Inc. construit des offres commerciales autourde Docker
7 . 10
![Page 89: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/89.jpg)
DOCKER HOSTS
8 . 1
![Page 90: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/90.jpg)
LES DISTRIBUTIONS TRADITIONNELLES
Debian, CentOS, Ubuntu
Supportent tous Docker
Paquets DEB et RPM disponibles
8 . 2
![Page 91: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/91.jpg)
UN PEU "TOO MUCH" NON ?
Paquets inutiles ou out of date
Services par défaut/inutiles alourdissent lesdistributions
Cycle de release figé
8 . 3
![Page 92: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/92.jpg)
OS ORIENTÉS CONTENEURS
Faire tourner un conteneur engine
Optimisé pour les conteneurs : pas de servicessuperflus
Fonctionnalités avancées liées aux conteneurs(clustering, network, etc.)
Sécurité accrue de part le minimalisme
8 . 4
![Page 93: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/93.jpg)
OS ORIENTÉS CONTENEURS : EXEMPLES
CoreOS (CoreOS)
Atomic (Red Hat)
RancherOS (Rancher)
Photon (VMware)
8 . 5
![Page 94: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/94.jpg)
COREOS : PHILOSOPHIE
Trois "channels" : stable, beta, alpha
Dual root : facilité de mise à jour
Système de fichier en read only
Pas de gestionnaire de paquets : tout estconteneurisé
Forte intégration de systemd
8 . 6
![Page 95: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/95.jpg)
COREOS : FONCTIONNALITÉS ORIENTÉES CONTENEURS
Inclus :DockerRktEtcd (base de données clé/valeur)Flannel (overlay network)Kubernetes Kubelet
Permet nativement d'avoir un cluster complet
Stable et éprouvé en production
Idéal pour faire tourner Kubernetes (Tectonic)
8 . 7
![Page 96: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/96.jpg)
COREOS : ETCD
Système de stockage simple : clé = valeur
Hautement disponible (quorum)
Accessible via API
8 . 8
![Page 97: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/97.jpg)
COREOS : FLANNEL
Communication multi-hosts
UDP ou VXLAN
S'appuie sur un système clé/valeur comme etcd
8 . 9
![Page 98: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/98.jpg)
RANCHEROS : PHILOSOPHIE
Docker et juste Docker : Docker est le process de PID1)
Docker in Docker : Daemon User qui tourne dans leDaemon System
Pas de processus tiers, pas d'init, juste Docker
Encore en beta
8 . 10
![Page 99: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/99.jpg)
FEDORA ATOMIC : PHILOSOPHIE
Équivalent à CoreOS mais basée sur Fedora
Utilise systemd
Update Atomic (incrémentielles pour rollback)
8 . 11
![Page 100: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/100.jpg)
PROJECT PHOTON
Développé par VMware mais Open Source
Optimisé pour vSphere
Supporte Docker, Rkt et Pivotal Garden (CloudFoundry)
8 . 12
![Page 101: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/101.jpg)
DOCKER HOSTS : CONCLUSION
Répond à un besoin différent des distributionsclassiques
Fourni des outils et une logique adaptée auxenvironnements full conteneurs
Sécurité accrue (mise à jour)
8 . 13
![Page 102: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/102.jpg)
DOCKER EN PRODUCTION
9 . 1
![Page 103: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/103.jpg)
OÙ DÉPLOYER ?
Cloud public:GCEAWS
Cloud privé: OpenStack
Bare Metal9 . 2
![Page 104: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/104.jpg)
COMMENT ?
Utilisation de COE (Container Orchestration Engine)
Utilisation d'infrastructure as code
Utilisation d'un Discovery Service
9 . 3
![Page 105: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/105.jpg)
CONTAINER ORCHESTRATION ENGINE
Gestion du cycle de vie des conteneurs/applications
Abstraction des hôtes et des cloud providers(clustering)
Scheduling en fonction des besoins de l'application
Quelques exemples:Docker SwarmRancherMesosKubernetes
9 . 4
![Page 106: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/106.jpg)
INFRASTRUCTURE AS A CODE
Version Control System
Intégration / Déploiement Continue
Outils de templating (Heat, Terraform,Cloudformation)
9 . 5
![Page 107: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/107.jpg)
DISCOVERY SERVICE
La nature éphémère des conteneurs empêche touteconfiguration manuelle
Connaître de façon automatique l'état de sesconteneurs à tout instant
Fournir un endpoint fixe à une applicationsusceptible de bouger au sein d'un cluster
9 . 6
![Page 108: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/108.jpg)
CONSUL
Combinaison de plusieurs services : KV Store, DNS,HTTP
Failure detection
Datacenter aware
Github
9 . 7
![Page 109: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/109.jpg)
CONSUL
Exemple :$ curl -X PUT -d 'docker' http://localhost:8500/v1/kv/container/key1true$ curl http://localhost:8500/v1/kv/container/key1 | jq .[ { "CreateIndex": 5, "ModifyIndex": 5, "LockIndex": 0, "Key": "container/key1", "Flags": 0, "Value": "ZG9ja2Vy" }]$ echo ZG9ja2Vy | base64 -ddocker
9 . 8
![Page 110: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/110.jpg)
CONSUL
L'enregistrement des nouveaux conteneurs peut êtreautomatisé
Registrator est un process écoutant le daemonDocker et enregistrant les évènements
9 . 9
![Page 111: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/111.jpg)
RANCHER
Permet de provisionner et mutualiser des hôtesDocker sur différents Cloud Provider
Fournit des fonctionnalité de COE :Cattle : COE développé par RancherKubernetes : COE développé par Google
Bon compromis entre simplicité et fonctionnalitéscomparé à Mesos ou Kubernetes
Encore jeune, adapté aux environnement de taillemoyenne (problèmes de passage à l'échelle)
![Page 112: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/112.jpg)
9 . 10
![Page 113: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/113.jpg)
APACHE MESOS / MARATHON
Mesos : Gestion et orchestration de systèmesdistribués
A la base orienté Big Data (Hadoop, Elasticsearch...) etétendu aux conteneurs via Marathon
Marathon : Scheduler pour Apache Mesos orientéconteneur
Multi Cloud/Datacenter
Adapté aux gros environnements, éprouvé jusque10000 nodes
![Page 114: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/114.jpg)
9 . 11
![Page 115: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/115.jpg)
KUBERNETES
COE développé par Google, devenu open source en2014
Utilisé par Google pour la gestion de leurs conteneurs
Adapté à tout type d'environnements
Devenu populaire en très peu de temps
9 . 12
![Page 116: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/116.jpg)
QUELQUES AUTRES
Hashicorp Nomad
Amazon ECS
Docker Cloud
Docker UCP (Universal Control Plane)
9 . 13
![Page 117: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/117.jpg)
DOCKER EN PRODUCTION : CONCLUSION
9 . 14
![Page 118: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/118.jpg)
MONITORER UNE INFRASTRUCTURE DOCKER
10 . 1
![Page 119: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/119.jpg)
QUOI MONITORER ?
L'infrastructure
Les conteneurs
10 . 2
![Page 120: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/120.jpg)
MONITORER SON INFRASTRUCTURE
Problématique classique
Monitorer des serveur est une problématique résoludepuis de nombreuses années par des outils devenus des
standards :
Nagios
Shinken
Centreon
Icinga
10 . 3
![Page 121: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/121.jpg)
INTÉRÊT ?
Un des principes du cloud computing est d'abstraireles couches basses
Docker accentue cette pratique
Est-ce intéressant de monitorer son infra ?
10 . 4
![Page 122: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/122.jpg)
Oui bien sûr ;)
10 . 5
![Page 123: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/123.jpg)
MONITORER SES CONTENEURS
Monitorer les services fournis par les conteneurs
Monitorer l'état d'un cluster
Monitorer un conteneur spécifique
10 . 6
![Page 124: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/124.jpg)
PROBLÉMATIQUES DES CONTENEURS
Les conteneurs sont des boîtes noires
Les conteneurs sont dynamiques
La scalabilité induite par les conteneurs devient unproblème
10 . 7
![Page 125: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/125.jpg)
MONITORER LES SERVICES
La problématique est différente pour chaque service
Concernant les web services (grande majorité), letemps de réponse du service et la disponibilité duservice sont de bons indicatifs
Problème adressé par certains services discoverypour conserver une vision du système cohérente (ex :Consul
10 . 8
![Page 126: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/126.jpg)
MONITORER L'ÉTAT D'UN CLUSTER
Dépends grandement de la technologie employée
Le cluster se situe t-il au niveau de l'host Docker oudes conteneurs eux mêmes ?
10 . 9
![Page 127: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/127.jpg)
MONITORER, OK MAIS DEPUIS OÙ ?
Commandes exécutées dans le container
Agents à l'intérieur du conteneur
Agents à l'extérieur du conteneur
10 . 10
![Page 128: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/128.jpg)
LES OUTILS DE MONITORING
Docker stats
CAdvisor
Datadog
Sysdig
Prometheus
10 . 11
![Page 129: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/129.jpg)
KUBERNETES : CONCEPTS ET OBJETS
11 . 1
![Page 130: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/130.jpg)
KUBERNETES : API RESOURCES
NamespacesPodsDeploymentsDaemonSetsStatefulSetsJobsCronjobs
11 . 2
![Page 131: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/131.jpg)
KUBERNETES : NAMESPACES
Fournissent une séparation logique des ressources :Par utilisateursPar projet / applicationsAutres...
Les objets existent uniquement au sein d'unnamespace donnéÉvitent la collision de nom d'objets
11 . 3
![Page 132: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/132.jpg)
KUBERNETES : LABELS
Système de clé/valeurOrganisent les différents objets de Kubernetes (Pods,RC, Services, etc.) d'une manière cohérente quireflète la structure de l'applicationCorrèlent des éléments de Kubernetes : par exempleun service vers des Pods
11 . 4
![Page 133: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/133.jpg)
KUBERNETES : LABELS
Exemple de label :apiVersion: v1kind: Podmetadata: name: nginx labels: app: nginxspec: containers: - name: nginx image: nginx ports: - containerPort: 80
11 . 5
![Page 134: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/134.jpg)
KUBERNETES : POD
Ensemble logique composé de un ou plusieursconteneursLes conteneurs d'un pod fonctionnent ensemble(instanciation et destruction) et sont orchestrés surun même hôteLes conteneurs partagent certaines spécifications duPod :
La stack IP (network namespace)Inter-process communication (PID namespace)Volumes
C'est la plus petite et la plus simple unité dansKubernetes
11 . 6
![Page 135: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/135.jpg)
KUBERNETES : POD
Les Pods sont définis en YAML comme les fichiersdocker-compose :
11 . 7
![Page 136: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/136.jpg)
KUBERNETES : DEPLOYMENT
Permet d'assurer le fonctionnement d'un ensemblede PodsVersion, Update et RollbackAnciennement appelés Replication Controllers
11 . 8
![Page 137: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/137.jpg)
KUBERNETES : DEPLOYMENT
11 . 9
![Page 138: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/138.jpg)
KUBERNETES : DEPLOYMENTapiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment labels: app: nginxspec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80
11 . 10
![Page 139: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/139.jpg)
KUBERNETES : DAEMONSET
Assure que tous les noeuds exécutent une copie dupodNe connaît pas la notion de replicas.Utilisé pour des besoins particuliers comme :
l'exécution d'agents de collection de logscomme fluentd ou logstashl'exécution de pilotes pour du matériel commenvidia-pluginl'exécution d'agents de supervision commeNewRelic agent ou Prometheus node exporter
11 . 11
![Page 140: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/140.jpg)
KUBERNETES : DAEMONSETapiVersion: apps/v1kind: DaemonSetmetadata: name: fluentdspec: selector: matchLabels: name: fluentd template: metadata: labels: name: fluentd spec: containers: - name: fluentd image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
11 . 12
![Page 141: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/141.jpg)
KUBERNETES : STATEFULSET
Similaire au DeploymentLes pods possèdent des identifiants uniques.Chaque replica de pod est créé par ordre d'indexNécessite un Persistent Volume et unStorage Class.Supprimer un StatefulSet ne supprime pas le PVassocié
11 . 13
![Page 142: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/142.jpg)
KUBERNETES : STATEFULSETapiVersion: apps/v1kind: StatefulSetmetadata: name: webspec: selector: matchLabels: app: nginx serviceName: "nginx" replicas: 3 template: metadata: labels: app: nginx spec: containers: - name: nginx image: k8s.gcr.io/nginx-slim:0.8 ports: - containerPort: 80 name: web volumeMounts: - name: www mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata:
11 . 14
![Page 143: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/143.jpg)
KUBERNETES : JOB
Crée des pods et s'assurent qu'un certain nombred'entre eux se terminent avec succès.Peut exécuter plusieurs pods en parallèleSi un noeud du cluster est en panne, les pods sontreschedulés vers un autre noeud.
11 . 15
![Page 144: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/144.jpg)
KUBERNETES : JOBapiVersion: batch/v1kind: Jobmetadata: name: pispec: parallelism: 1 completions: 1 template: metadata: name: pi spec: containers: - name: pi image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: OnFailure
11 . 16
![Page 145: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/145.jpg)
KUBERNETES: CRON JOB
Un CronJob permet de lancer des Jobs de manièreplanifiée.la programmation des Jobs se définit au format Cronle champ jobTemplate contient la définition del'application à lancer comme Job.
11 . 17
![Page 146: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/146.jpg)
KUBERNETES : CRONJOBapiVersion: batch/v1beta1kind: CronJobmetadata: name: batch-job-every-fifteen-minutesspec: schedule: "0,15,30,45 * * * *" jobTemplate: spec: template: metadata: labels: app: periodic-batch-job spec: restartPolicy: OnFailure containers: - name: pi image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
11 . 18
![Page 147: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/147.jpg)
KUBERNETES : NETWORKING
12 . 1
![Page 148: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/148.jpg)
KUBERNETES : NETWORK PLUGINS
Kubernetes n'implémente pas de solution de gestionde réseau par défautLe réseau est implémenté par des solutions tierces :
: IPinIP + BGP : eBPF : VXLAN
Bien
CalicoCiliumWeave
d'autres
12 . 2
![Page 149: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/149.jpg)
KUBERNETES : CNI
Projet dans la CNCFStandard pour la gestion du réseau enenvironnement conteneuriséLes solutions précédentes s'appuient sur CNI
Container Network Interface
12 . 3
![Page 150: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/150.jpg)
KUBERNETES : SERVICES
Abstraction des Pods sous forme d'une IP virtuelle deServiceRendre un ensemble de Pods accessibles depuisl'extérieur ou l'intérieur du clusterLoad Balancing entre les Pods d'un même ServiceSélection des Pods faisant parti d'un Service grâceaux labels
12 . 4
![Page 151: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/151.jpg)
KUBERNETES : SERVICES
12 . 5
![Page 152: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/152.jpg)
KUBERNETES : SERVICES CLUSTERIP
Exemple de Service (on remarque la sélection sur lelabel et le mode d'exposition):
apiVersion: v1kind: Servicemetadata: name: frontendspec: type: ClusterIP ports: - port: 80 selector: app: guestbook
12 . 6
![Page 153: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/153.jpg)
KUBERNETES : SERVICE NODEPORT
NodePort : chaque noeud du cluster ouvre un portstatique et redirige le trafic vers le port indiqué
12 . 7
![Page 154: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/154.jpg)
KUBERNETES : SERVICE LOADBALANCER
LoadBalancer : expose le Service en externe enutilisant le loadbalancer d'un cloud provider
AWS ELB/ALB/NLBGCP LoadBalancerAzure BalancerOpenStack Octavia
12 . 8
![Page 155: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/155.jpg)
KUBERNETES : SERVICE LOADBALANCER
12 . 9
![Page 156: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/156.jpg)
KUBERNETES : SERVICES
Il est aussi possible de mapper un Service avec un nom dedomaine en spécifiant le paramètre spec.externalName.
apiVersion: v1kind: Servicemetadata: name: my-service namespace: prodspec: type: ExternalName externalName: my.database.example.com
12 . 10
![Page 157: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/157.jpg)
KUBERNETES: INGRESS
L'objet Ingress permet d'exposer un Service àl'extérieur d'un cluster KubernetesIl permet de fournir une URL visible permettantd'accéder un Service KubernetesIl permet d'avoir des terminations TLS, de faire duLoad Balancing, etc...
12 . 11
![Page 158: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/158.jpg)
KUBERNETES: INGRESS
12 . 12
![Page 159: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/159.jpg)
KUBERNETES : INGRESSapiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: particulespec: rules: - host: blog.particule.io http: paths: - path: / pathType: Prefix backend: service: name: frontend port: number: 80
12 . 13
![Page 160: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/160.jpg)
KUBERNETES : INGRESS CONTROLLER
Pour utiliser un Ingress, il faut un Ingress Controller. UnIngress permet de configurer une règle de reverse proxy
sur l'Ingress Controller.
Nginx Controller :
Traefik : Istio : Linkerd : Contour :
https://github.com/kubernetes/ingress-nginxhttps://github.com/containous/traefik
https://github.com/istio/istiohttps://github.com/linkerd/linkerdhttps://www.github.com/heptio/contour/
12 . 14
![Page 161: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/161.jpg)
KUBERNETES : ARCHITECTURE
13 . 1
![Page 162: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/162.jpg)
KUBERNETES : COMPOSANTS
Kubernetes est écrit en Go, compilé statiquement.Un ensemble de binaires sans dépendanceFaciles à conteneuriser et à packagerPeut se déployer uniquement avec des conteneurssans dépendance d'OS
13 . 2
![Page 163: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/163.jpg)
KUBERNETES : COMPOSANTS DU CONTROL PLANE
etcd: Base de donnéeskube-apiserver : API server qui permet laconfiguration d'objets Kubernetes (Pod, Service,Deployment, etc.)kube-proxy : Permet le forwarding TCP/UDP et leload balancing entre les services et les backends(Pods)kube-scheduler : Implémente les fonctionnalités deschedulingkube-controller-manager : Responsable de l'état ducluster, boucle infinie qui régule l'état du cluster afind'atteindre un état désiré
13 . 3
![Page 164: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/164.jpg)
KUBERNETES : COMPOSANTS DU CONTROL PLANE
13 . 4
![Page 165: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/165.jpg)
KUBERNETES : COMPOSANTS DU CONTROL PLANE
13 . 5
![Page 166: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/166.jpg)
KUBERNETES : ETCD
Base de données de type Clé/Valeur (Key Value Store)Stocke l'état d'un cluster KubernetesPoint sensible (stateful) d'un cluster KubernetesProjet intégré à la CNCF
13 . 6
![Page 167: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/167.jpg)
KUBERNETES : KUBE-APISERVER
Les configurations d'objets (Pods, Service, RC, etc.) sefont via l'API serverUn point d'accès à l'état du cluster aux autrescomposants via une API RESTTous les composants sont reliés à l'API server
13 . 7
![Page 168: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/168.jpg)
KUBERNETES : KUBE-SCHEDULER
Planifie les ressources sur le clusterEn fonction de règles implicites (CPU, RAM, stockagedisponible, etc.)En fonction de règles explicites (règles d'affinité etanti-affinité, labels, etc.)
13 . 8
![Page 169: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/169.jpg)
KUBERNETES : KUBE-PROXY
Responsable de la publication des ServicesUtilise iptablesRoute les paquets à destination des conteneurs etréalise le load balancing TCP/UDP
13 . 9
![Page 170: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/170.jpg)
KUBERNETES : KUBE-CONTROLLER-MANAGER
Boucle infinie qui contrôle l'état d'un clusterEffectue des opérations pour atteindre un état donnéDe base dans Kubernetes : replication controller,endpoints controller, namespace controller etserviceaccounts controller
13 . 10
![Page 171: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/171.jpg)
KUBERNETES : AUTRES COMPOSANTS
kubelet : Service "agent" fonctionnant sur tous lesnœuds et assure le fonctionnement des autresserviceskubectl : Ligne de commande permettant de piloterun cluster Kubernetes
13 . 11
![Page 172: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/172.jpg)
KUBERNETES : KUBELET
Service principal de KubernetesPermet à Kubernetes de s'auto configurer :
Surveille un dossier contenant les manifests(fichiers YAML des différents composant deKubernetes).Applique les modifications si besoin (upgrade,rollback).
Surveille l'état des services du cluster via l'API server(kube-apiserver).
13 . 12
![Page 173: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/173.jpg)
KUBERNETES : KUBELET
Assure la communication entre les nodes etl'apiserverEn charge de créer les conteneurs au travers del'interface Container Runtime Interface (CRI)Peut fonctionner avec différentes container runtimes
13 . 13
![Page 174: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/174.jpg)
KUBERNETES : KUBELET
13 . 14
![Page 175: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/175.jpg)
KUBERNETES: NETWORK
Kubernetes n'implémente pas de solution réseau pardéfaut, mais s'appuie sur des solutions tierces qui
implémentent les fonctionnalités suivantes :
Chaque pods reçoit sa propre adresse IPLes pods peuvent communiquer directement sansNAT
13 . 15
![Page 176: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/176.jpg)
OPENSHIFT : INTRODUCTION
14 . 1
![Page 177: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/177.jpg)
OPENSHIFT
Solution de PaaS développée par Red Hat
Deux version :Open Source : Entreprise :
Se base sur Kubernetes en tant qu'orchestrateur deconteneurs
OpenShift OriginOpenShift Container Platform
14 . 2
![Page 178: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/178.jpg)
OPENSHIFT VS KUBERNETES : DIFFÉRENCES ET AJOUTS
Pas d'Ingress : Router
Build et Images Stream : Création d'images etpipeline de CI/CD
Templates : Permet de definir et templatiserfacilement un ensemble d'Objet OpenShift
OpenShift SDN ou Nuage Network pour le réseau
14 . 3
![Page 179: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/179.jpg)
OPENSHIFT : ROUTER
Quasiment identique à Ingress mais implémentésavant Kubernetes
Fournissent les même fonctionnalités
Deux implementations :HAProxyF5 Big IP
14 . 4
![Page 180: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/180.jpg)
OPENSHIFT : BUILD
Permet de construire et reproduire des imagesd'application
Docker builds : via Dockerfile
Source-to-Image (S2I) builds : système de buildpropre à OpenShift qui produit une image Dockerd'une application depuis les source
Pipeline builds : via Jenkins
14 . 5
![Page 181: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/181.jpg)
OPENSHIFT : IMAGE STREAM
Similaires à un dépôt DockerHub
Rassemble des images similaires identifiées par destags
Permet de garder un historique des différentesversions
14 . 6
![Page 182: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/182.jpg)
OPENSHIFT : CONCLUSION
14 . 7
![Page 183: FORMATION DOCKER - particule](https://reader030.fdocuments.fr/reader030/viewer/2022011721/61d25581084ef75dc023a700/html5/thumbnails/183.jpg)
CONCLUSION
15 . 1