iut-angers-2024.baraise.com
Open in
urlscan Pro
95.216.15.50
Public Scan
URL:
https://iut-angers-2024.baraise.com/
Submission: On February 15 via api from US — Scanned from US
Submission: On February 15 via api from US — Scanned from US
Form analysis
0 forms found in the DOMText Content
VALENTIN BARAISE Introduction à Dockers Responsable Datacenter chez Empreinte Digitale Le 15/02/2024 PRÉAMBULE ~ 45MIN * Installation d'un OS * Installation d'un serveur web * Installation d'une application web (En php de votre choix) Le 15/02/2024 PRENONS L'EXEMPLE D'UNE WEBAPP > Comment fonctionne une application web dans le cas où elle est installée sur : * Du "Bare-metal" * Dans une VM * Dans un conteneur Le 15/02/2024 * Comparons Conteneurs et Machines Virtuelles Le 15/02/2024 Histoire LES CONTENEURS Le 15/02/2024 Histoire HISTOIRE DES CONTAINERS ... ET DOCKER Le 15/02/2024 Histoire PREMIÈRES EXPÉRIMENTATIONS * IBM VM/370 (1972) * Linux VServers (2001) * Solaris Containers (2004) * FreeBSD jails (1999-2000) Les containers sont en fait présents depuis très longtemps.. (+ d'infos ici ) Le 15/02/2024 Histoire MANIPULATION SUR LE CHROOT Démo Le 15/02/2024 Histoire HISTOIRE * Chroot * Namespace * Cgroups Le 15/02/2024 Histoire MANIPULATION SUR LE CHROOT Démo Le 15/02/2024 Histoire POURQUOI FAIRE DU CHROOT ? On peut se poser la question de son utilité aujourd'hui... mais. * Réparer un système corrompue * Espace de transfert sftp séparé (jailkit) Le 15/02/2024 top:10% Histoire * Jail BSD * 1er release : 4 Mars 2000 * OpenVZ * 1ère release : 2005 * Dernière release : 26 Juillet 2016 * EOL : TBD * LinuxContainers (LXC) * 1ère release : 6 août 2008 * Dernière release : 19 Octobre 2021 * Release Note Plus d'informations sur l'histoire des containers ici Le 15/02/2024 Histoire ET DOCKER ALORS ? * Projet Français * Basé sur LXC et OpenVz > Initialement édité par DotCloud * Date de 2013 > Aujourd'hui c'est le système de container le plus utilisé. Le 15/02/2024 Histoire LES PREMIERS UTILISATEURS DE DOCKER * PAAS builders (Flynn, Dokku, Tsuru, Deis...) * PAAS users * CI platforms * devs', devs', devs', devs' Le 15/02/2024 Histoire MATURITÉ DE DOCKER (2015-2016) Le 15/02/2024 Histoire DOCKER EST DEVENU UN STANDARD * Docker : 1.0 milestone. * ExLes systèems existant ajoutent le support de Docker. * Standardisation autour de l'OCI (Open Containers Initiative). * De nouveaux container engines sont développés. * Création de la CNCF (Cloud Native Computing Foundation). Le 15/02/2024 Histoire DOCKER EST DEVENU UNE PLATFORME * Par défaut l'engin est "Docker Engine." * De nombreux outils ont été ajoutés: * Docker Compose (formerly "Fig") * Docker Machine * Docker Swarm * Kitematic * Docker Cloud (formerly "Tutum") * Docker Datacenter * etc. Le 15/02/2024 Histoire ALLONS DÉCOUVRIR DOCKER Le 15/02/2024 Docker DOCKERS 1. Installation 2. Lancement de notre premier conteneur (Intro à la CLI) 3. Notion d'image (Build, ephemeral,...) 4. Accès à notre application Le 15/02/2024 Docker : Installation INSTALLATION DE DOCKER https://docs.docker.com/engine/install/debian/ https://docs.docker.com/engine/install/ubuntu/ Le 15/02/2024 Docker : Installation > Requirements sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release > Récupération de la clé du repository curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg Le 15/02/2024 Docker : Installation > Ajout du docker repository ( Attention à la "distribution", ubuntu or > debian...) echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null > Let's do it ! Installation de docker (enfin) $ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io * Depuis le début nous aurions pu fairecurl -fsSL get.docker.com | sh Le 15/02/2024 Docker : Premier conteneur et CLI NOS PREMIERS PAS AVEC DOCKER On va lancer notre premier conteneur. docker run reg.cloud-ed.fr/cache/library/hello-world docker run reg.cloud-ed.fr/cache/library/busybox echo hello world Le 15/02/2024 Docker : Premier conteneur et CLI ANALYSONS CE QU'IL VIENT DE SE PASSER Unable to find image 'hello-world:latest' locally Le 15/02/2024 Docker : Premier conteneur et CLI ANALYSONS CE QU'IL VIENT DE SE PASSER Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Le 15/02/2024 Docker : Premier conteneur et CLI ANALYSONS CE QU'IL VIENT DE SE PASSER Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Digest: sha256:95ddb6c31407e84e91a986b004aee40975cb0bda14b5949f6faac5d2deadb4b9 Status: Downloaded newer image for hello-world:latest Le 15/02/2024 Docker : Premier conteneur et CLI ANALYSONS CE QU'IL VIENT DE SE PASSER Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Digest: sha256:95ddb6c31407e84e91a986b004aee40975cb0bda14b5949f6faac5d2deadb4b9 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/ Le 15/02/2024 Docker : Premier conteneur et CLI Bon très bien mais on n'a pas de système encore là? Il est où le conteneur que tu nous a promis ? Le 15/02/2024 Docker : Premier conteneur et CLI docker run -it reg.cloud-ed.fr/cache/library/ubuntu # Lancez la commande screenfetch > -i se connecter sur le 'stdin' du conteneur > -t avoir un pseudo-terminal Note : on peut concaténer les options ! * Vu qu'il nous manque la commande nous allons l'installer !apt update && apt install -y screenfetch Le 15/02/2024 Docker : Premier conteneur et CLI SUCCESS ! * Nous pouvons sortir de notre container avec la commande "exit" ou Ctrl+d * Notre conteneur est arrété mais... il existe toujours ! * Tentons de le relancer avec la commande précédente... > Petit rappel docker run -it reg.cloud-ed.fr/cache/library/ubuntu # Lancez la commande screenfetch * Que se passe-t-il ? Le 15/02/2024 Docker : Premier conteneur et CLI IT'S A FAILED ! * Nous venons de découvrir le côté immutable des containers dockers. * À chaque fois que l'on va lancer un container on en crée un nouveau. * MAIS POURQUOI ?? Le 15/02/2024 Docker : Premier conteneur et CLI Le système hôte et les containers sont indépendants. * On peut run différents OS sur un host différent. * Il peut y avoir des packages manager différents * Installer quelque chose sur un container n'affecte pas l'host. * Et vice versa. Le 15/02/2024 Docker : Premier conteneur et CLI L'objectif des conteneurs c'est d'avoir un environnement reproductible, surtout dans le développement. Une vm elle va vivre, et évoluer. Le workflow de Docker est là pour s'assurer que si on lance le code 1, 10, 100 fois alors on aura toujours le même environnement. Le 15/02/2024 Docker : Premier conteneur et CLI BONUS ! docker run -it reg.cloud-ed.fr/cache/library/alpine apk add neofetch && neofetch Le 15/02/2024 Docker : Premier conteneur et CLI (Background run) Par deux fois nous avons lancé des conteneurs et nous avions un shell. C'est peu commode pour lancer une application en mode "service", ou autrement dit en "Background". * ALORS, COMMENT LANCER UNE APPLICATION BACKGROUND VIA DOCKER ? Le 15/02/2024 Docker : Premier conteneur et CLI (Background run) On va commencer par lancer un containeur qui permet d'afficher toutes les secondes l'heure. docker run reg.cloud-ed.fr/cache/jpetazzo/clock * Super ! On a un programme qui fonctionne. * Mais si je ferme mon shell mon conteneur va s'arrêter ? * TOUT À FAIT. ON VA DONC LE LANCER EN MODE "DÉTACHÉ" OU "BACKGROUND" Le 15/02/2024 Docker : Premier conteneur et CLI (Background run) docker run -d reg.cloud-ed.fr/cache/jpetazzo/clock -d est pour le mode "daemon" * Nous n'avons plus de vue du docker comme précédemment. * Il semblerait que docker nous donnes un id... mais de quoi ? * Jetons un oeil maintenant ! Le 15/02/2024 Docker : Premier conteneur et CLI (Background run) Notre objectif va être de voir si notre conteneur fonctionne. On va donc essayer de lister les containers en fonction sur notre "host". Pour ça nous allons lancer la commande: docker ps * Qu'avons nous ? * Où sont nos conteneurs précédents? * Que se passe-t-il si nous lançons d'autres conteneurs "clock" ? Le 15/02/2024 Docker : Premier conteneur et CLI (Background run) SUPER ! NOUS AVONS NOS CONTENEURS QUI SONT LANCÉS ! * Mais... nous ne pouvons pas consulter le programme ? > Rappel le programme nous affiche l'heure toutes les secondes en STDOUT. * Pour consulter le stdout nous allons regarder les "logs"docker logs <id d'un container> * Il est possible de passer des options bien pratiques. -f pour follow le stream et avoir en "live" les logs d'output --tail=<un nombre> qui permet de n'afficher que les "n" dernière lignes. Le 15/02/2024 Docker : Premier conteneur et CLI (Background run) Maintenant qu'on est capable de lancer nos conteneurs, de vérifier s'ils fonctionnent et de voir le fonctionnement avec "logs". Comment puis-je les arrêter ? * Aussi simple qu'un "stop" ou un "kill" docker stop <id ou nom de container> # Essaye d'arrêter le process proprement (wait 10s then kill) docker kill <id ou nom de container> # Instantannée * Est ce que vous pouvez lister de nouveau les containers ? docker ps Le 15/02/2024 Docker : Premier conteneur et CLI (Background run) Nous n'avons plus aucun containers ? Où sont ils ! LISTONS TOUS LES CONTAINERS MÊME CEUX ARRÊTÉS: docker ps -a -areprésente all * Que constatez vous ? * On retrouve nos autres containers * Pouvons nous les redémarrer ? Allons voir ça ! Le 15/02/2024 Docker : Premier conteneur et CLI (Start) Lançons un docker clock créé précédemment : docker start nervous_clarke Puis vérifions qu'il fonctionne : docker ps * Comment puis je me connecter en mode "Foreground" comme tout à l'heure avec ubuntu ?docker attach nervous_clarke * Pour se détacher du container "^P^Q" * Ou "^C" mais un SIGINT est envoyé Le 15/02/2024 Docker : Premier conteneur et CLI (Start) Petit memento de ce qu'on a vu docker run # Lance un nouveau container docker ps # liste les containers docker start # Start un container préalablement créé docker stop # Stop un container "gracefully" docker kill # Kill le process docker attach # Permet d'accèder au process en cours docker logs # Permet d'avoir le stdout du container On a vu également que les containers étaient bien isolés de l'host et des containers entre eux. Même si on utilise la même image... * TIENS TIENS TIENS... QUELLE EST CETTE HISTOIRE D'IMAGE? Le 15/02/2024 Docker PAUSE LET'S TALK ABOUT IMAGES AFTER Le 15/02/2024 Docker DOCKERS 1. Installation 2. Lancement de notre premier conteneur (Intro à la CLI) 3. Notion d'image (Build, ephemeral,...) 4. Accès à notre application Le 15/02/2024 Docker : Les images OJECTIF : COMPRENDRE CE QU'EST UNE IMAGE. * Une image est composée de layer * Qu'est ce qui les constituent * Où sont les images * Comment les faires nous mêmes Le 15/02/2024 Docker : Les images On va donc parler : * d'images * de layers * de tag * de registry * de persistence * On essaiera de recréer notre image avec screenfetch Le 15/02/2024 Docker : Les images Un container est une image lancée et qui embarque plusieurs couches de données. Ce sont les layers. Ces layers sont constitués: * du système de base * des dépendances * du code de notre application Le 15/02/2024 width: Docker : Les images Le 15/02/2024 Docker : Les images * La différence entre un container et une image réside dans le fait que l'image est "capturée" à un instant. Et le container l'utilise pour se lancer. À chaque lancement d'un container il va "copier" l'image et "runner" sur une copie de l'image. L'image est en "Read Only" * > Mais du coup.. Si on souhaite installer un programme et qu'on souhaite > modifier l'image comment fait on ? Le 15/02/2024 Docker : Les images HARD WAY STYLE docker run -it reg.cloud-ed.fr/cache/library/ubuntu bash apt update && apt install screenfetch docker diff <idcontainer> docker commit <idimage> docker tag <idimage> myimage:tag Le 15/02/2024 Docker : Les images SUPER ! UNE NOUVELLE IMAGE VIENT D'ÊTRE CRÉÉE ! Listons les : docker image ls * Testons notre image :) !docker run myimage:tag screenfetch Le 15/02/2024 Docker : Les images ON A DONC RÉUSSI À LANCER NOTRE IMAGE ! Quelques informations supplémentaires. Pour lister nos images on sait déjà faire :) docker image ls Le 15/02/2024 Docker : Les images Il est possible de faire des recherches d'images : docker search et pour récupérer l'image sans la lancer, ici on va récupérer dockercloud/hello-world docker pull registry.gitlab.com/valbaraise/docker/hello-world # Optionnel le tag docker pull registry.gitlab.com/valbaraise/docker/hello-world:latest > Remarque: On voit bien les différentes layers lors du pull. * Bon très bien, mais si tout le monde fait ses images avec "commit" et "tag" ça va être long à faire... Le 15/02/2024 Docker: les builds LES BUILDS ! Dans 99% des cas on va builder nos images à partir d'un fichier spécial le Dockerfile. * C'est la recette pour créer une image Docker * Il contient des commandes pour expliquer comment construire l'image * On lance la création avec la commande docker build D'ailleurs allons observer l'image dockercloud/hello-world (link) Le 15/02/2024 Docker: les builds PRÉCÉDEMMENT NOUS AVONS BUILDÉ NOTRE IMAGE DE MANIÈRE DYNAMIQUE. NOTRE OBJECTIF MAINTENANT C'EST DE BUILDER UNE IMAGE DE MANIÈRE STATIQUE ! Le 15/02/2024 Docker: les builds A VOUS DE JOUER ! Créez votre image avec screenfetch à partir d'un Dockerfile * # Dockerfile FROM ubuntu:latest RUN apt-get update RUN apt-get install screenfetch -y * docker build . -t monnomdimage * docker image ls Le 15/02/2024 Docker: les builds Il est également possible avec Buildkit ! On en reparlera mais on peut tenter l'expérience avec la commande suivante : DOCKER_BUILDKIT=1 docker build . Le 15/02/2024 Docker: les builds EXPLICATIONS FROM: permet de récupérer une image déjà existante RUN : Lance une commande, attention il ne faut pas que ce soit interactif ! Plus d'infos sur les dockerfile : https://docs.docker.com/engine/reference/builder/ On peut voir nos actions avec la commande : docker history monnomdimage * Bon c'est super mais a part le faire plus automatisable et predictible, il faut quand même lancer "screenfetch" manuellement. * Effectivement ceci est dû au CMD et ENTRYPOINT * On peut aller plus loin avec dive Le 15/02/2024 Docker: Build, adapter le start ON VEUT POUVOIR LANCER SCREENFETCH DIRECTEMENT LORSQUE NOTRE CONTAINER EST CRÉÉ En fait par défaut, chaque container a une commande qui se lance. Même si rien ne se passe. /bin/sh Il est possible de modifier le comportement avec les mots clés CMDet ENTRYPOINT. Le 15/02/2024 Docker: Build, adapter le start Chaque container va fonctionner avec un ENTRYPOINT et un CMD. C'est la combinaison des deux qui indique quoi faire au lancement du container. Le CMD est un paramètre à ENTRYPOINT. Par défaut ça lance un shell. Nous, nous souhaitons lancer screenfetch. > On peut voir l'entrypoint d'un container avec la commande docker inspect Le 15/02/2024 Docker: Build, adapter le start ON VA MODIFIER NOTRE DOCKERFILE : # Dockerfile FROM ubuntu:latest RUN apt-get update RUN apt-get install neofetch -y CMD neofetch ou # Dockerfile FROM ubuntu:latest RUN apt-get update RUN apt-get install neofetch -y ENTRYPOINT ['neofetch'] * On rebuild et on relance ! Le 15/02/2024 Docker POINT SUR CE QU'ON A VU * Lister les images * Build un container * Voir les versions * Adapter un build à nos besoins Le 15/02/2024 Docker, accès à nos containers CAS RÉEL ! UNE WEBAPP :) Dans le monde réel, on lance rarement screenfetch dans nos containers. Le 15/02/2024 Docker, accès à nos containers UNE WEBAPP QU'EST CE QUE C'EST ? > Triviale comme question mais... ? * Du code * Un serveur http * Un client Le 15/02/2024 Docker, accès à nos containers On va lancer l'application qu'on a pull précédemment * Lancer dockercloud/hello-world en mode daemon * Consulter le statut du container * Consulter les logs * > Que remarque-t-on ? * Comment y accèder ? Le 15/02/2024 Docker, expose ! EXPOSE Pour accèder au port d'un container il est possible d'exposer celui-ci au reste du monde. Pour ça la commande docker run doit etre configuré avec l'option -p ou -P: docker run -P -d dockercloud/hello-world vs docker run -p 8080:80 -d dockercloud/hello-world Le 15/02/2024 Docker, expose ! > Aparté Depuis le début je vous ai donné les commandes à taper. Le monde libre/open source est souvent bien organisé et permet d'avoir de l'aide lors de l'éxécution des commandes. Pour docker c'est pareil. Il exite la commande docker help qui permet d'avoir de l'aide sur chacunes des commandes. * Donnez moi la différence entre docker run -P et docker run -p via la commande help * docker help run Le 15/02/2024 Docker, expose ! SUPER ! ON A RÉUSSI À ACCÉDER À NOTRE "HELLO WORLD !" Une fois qu'on est capable de mettre à disposition des ressources via un port on peut y accèder avec un reverse proxy. Il en existe énormément avec plus ou moins d'avantages. Le 15/02/2024 Docker, expose ! PETIT POINT On a vu beaucoup de choses ! * Comment récupérer une image * Comment build une image * Comment accèder à un service dans le container > * Comment je fais si je veux monter ma propre page web ? > Pour ça on va utiliser des "volumes" Le 15/02/2024 Docker PAUSE LET'S TALK ABOUT VOLUMES AFTER Le 15/02/2024 Docker MAINTENANT FAISONS NOTRE PROPRE IMAGE AVEC UN FICHIER HTML QUE L'ON AURA CRÉÉ NOUS MÊME ! Le 15/02/2024 Docker Voici ce qu'on va faire : Le 15/02/2024 Docker INDEX.HTML <!doctype html> <html lang="fr"> <head> <meta charset="utf-8"> <title>Ma super page </title> </head> <body> <h1>J'adore les gifs :</h1> <br> <img src="https://media1.tenor.com/images/4324d537dbc06f422b34ae131c7b3e14/tenor.gif?itemid=7755460" width="833" height="624.75" style="max-width: 833px; background-color: rgb(63, 63, 63);"> </body> </html> Le 15/02/2024 Docker LANCEMENT DE NOTRE CONTAINER AVEC UN VOLUME QUI PERMETTRA DE "DÉPOSER" LE FICHIER DANS LE DOSSIER D'NGINX docker run -d -v $(pwd)/sources/:/usr/share/nginx/html/ -p 8090:80 nginx:latest * On y accède via http://<ipaddress>:8090 * SUCCESS! Le 15/02/2024 Docker QU'EST CE QU'ON VIENT DE FAIRE? On a créé un volume, qui est en dehors de notre container, que l'on met dans le container. Ainsi on partage des ressources entre le "host" et le "container" * Très utile pour mettre à jour des sources sans relancer le container * Permet d'alléger les images lors des déploiements en production Le 15/02/2024 Docker NOUS AVONS ABORDÉ TRÈS SUCCINTEMENT LES VOLUMES Pour plus d'informations n'hésitez pas à jeter un oeil aux sketchnotes d'Aurélie Vache. link Le 15/02/2024 Docker DOCKERS 1. Installation 2. Lancement de notre premier conteneur (Intro à la CLI) 3. Notion d'image (Build, ephemeral,...) 4. Accès à notre application > Super on a tout réussi ! Le 15/02/2024 Docker CE QUE NOUS N'AVONS PAS ENCORE VU * les labels * les réseaux * le mot clé inspect ou encore exec * la résolution dns * les services mesh * la gestion du "restart" pour avoir son application toujours fonctionnelle * ... > En somme il y a encore énormément de notions à découvrir ! Le 15/02/2024 Docker HOP HOP HOP ! ON VA NETTOYER TOUT ÇA AVANT DE PASSER A LA SUITE ! Le 15/02/2024 Docker docker system df docker system prune > Attention cependant à l'impact en production ! Le 15/02/2024 Les orchestrateurs LES ORCHESTRATEURS 1. docker-compose 2. Kubernetes / Docker swarm 3. Les containers runtime Le 15/02/2024 Les orchestrateurs, définition QUEL EST L'OBJECTIF D'UN ORCHESTRATEUR ? * Organiser les ressources * Décrires sont infrastructure * Gérer le cycle de vie des containers Le 15/02/2024 Les orchestrateurs: docker-compose PARLONS DE DOCKER-COMPOSE Le 15/02/2024 Les orchestrateurs: docker-compose DOCKER-COMPOSE N'EST PAS VRAIMENT UN ORCHESTRATEUR. * C'est un outil * Il permet de définir un ensemble de container et d'associer les bonnes ressources * Permet d'avoir un workflow complet * Permet de faire interragir facilement des containers ensemble Mais: * Il ne surveille pas l'état * Il n'agit pas de manière autonome Le 15/02/2024 Les orchestrateurs: docker-compose A QUOI ÇA RESSEMBLE ? Exemple avec le projet : https://github.com/jpetazzo/wordsmith version: "2" services: web: build: web ports: - 80 db: build: db words: build: words Le 15/02/2024 Les orchestrateurs: docker-compose DÉMO * Les commandes utiliséesdocker-compose up (-d) #Pour lancer la stack docker-compose ps # Pour avoir l'état des containers docker-compose logs ... Le 15/02/2024 Les orchestrateurs: docker-compose A VOUS DE JOUER ! * On va dockeriser l'application que l'on a choisi ce matin (Wordpress,Glpi,...) * On va lancer en docker compose le projet * On va accèder à l'application. Installation de compose : https://docs.docker.com/compose/install/linux/ Doc : https://docs.docker.com/compose/compose-file/compose-file-v3/ Le 15/02/2024 Les orchestrateurs: docker-compose PROXYFICATION ! * On a réussi à lancer notre projet ! On a même une stack pour la reproductibilité. * On va ajouter un proxy pour limiter les interractions extérieurs ! * Nginx/Traefik Sources avec nextcloud : nextcloud.tar.gz Le 15/02/2024 Les orchestrateurs: Kubernetes Le 15/02/2024 Les orchestrateurs: Kubernetes Le 15/02/2024 Les orchestrateurs: Kubernetes PROJET À L'ORIGINE DE GOOGLE * From Borg to Kubernetes (youtube) * À un cerveau pour gérer le tout (etcd) * De nombreuses notions... PVC / CNI / OCI / HPA / Pods / Ingress .... * Extrêmement complet mais également très complexe... > On parle de 'IaC' Infrastructure as Code Le 15/02/2024 Les orchestrateurs: Kubernetes On ne parle plus uniquement de container mais surtout de cluster. Ce qui a permis d'être utilisé at scale notamment dans le "cloud". On a même pu voir certains retours d'expérience sur plus de 7,500 noeuds fonctionnant en même temps (source) Le 15/02/2024 Les orchestrateurs: Kubernetes Le 15/02/2024 Les orchestrateurs: Kubernetes KUBERNETES UN ECOSYSTÈME COMPLET En plus d'etre très populaire il bénéficie d'un ensemble d'outils très complets. On les retrouve surtout via la CNCF( Cloud Native Computing Fundation). Le 15/02/2024 Les orchestrateurs: Kubernetes Le 15/02/2024 Les orchestrateurs: Kubernetes ALORS COMMENT FAIRE POUR L'UTILISER ? Il nous faudrait encore au moins 1 semaine de cours pour comprendre comment tout faire fonctionner ensemble. Et environ une matinée pour lancer "basiquement" notre première application. Le 15/02/2024 Les orchestrateurs: Kubernetes Mais voici quelques projets pour tester "localement" un cluster Kubernetes (Lien) Le 15/02/2024 Les orchestrateurs: Swarm RAPIDEMENT ON VA PARLER DE SWARM * Créé par Docker, Inc. il arrive après Kubernetes de Google * Facile à utiliser lorsqu'on connait Docker Mais souffre de quelques lacunes Le 15/02/2024 Les orchestrateurs: Swarm On a parlé des orchestrateurs les plus connus mais il existe d'autres orchestrateurs tel que : Le 15/02/2024 Les orchestrateurs: Swarm CONCLUSION On a vu beaucoup de choses à travers ce TP. L'histoire, comment ça a évolué et pourquoi. On a appris a utiliser les containers, à en créer, à en modifier. Le 15/02/2024 Les orchestrateurs: Swarm POUR ALLER PLUS LOIN Ce cours se base sur le github de Jérôme Petazzoni https://github.com/jpetazzo/container.training/tree/main/slides/containers Ainsi que celui de Brian Holt https://btholt.github.io/complete-intro-to-containers/ Vous pouvez toujours consulter les sketchnotes d'Aurélie Vache qui aborde visuellement les notions de Docker et Kubernetes Le 15/02/2024 Les orchestrateurs: Swarm MERCI ! QUESTIONS ? Le 15/02/2024 Previous slidePage 1 of 103Next slideToggle fullscreenOpen presenter view ![bg left:33% width:200px](https://www.afnor.org/wp-content/uploads/2019/10/afnor-logo.png) ![bg left:33% width:200px](https://empreintedigitale.fr/wp-content/themes/empreinte/img/logo-with-baseline.svg) Notion de reverse proxy? Notions de Php/module https://github.com/awesome-selfhosted/awesome-selfhosted?tab=readme-ov-file#dns https://github.com/awesome-selfhosted/awesome-selfhosted?tab=readme-ov-file#self-hosting-solutions Prenons l'exemple d'un service Web bare metal -> Tout est sur une machine physique. Votre code est physiquement présent sur cette machine et cette machine ne fais que ça. Risque d'avoir plusieurs applications "concurrente" facilement accessible par l'une ou l'autre. Ou de faire du déni de service (fork bomb, load,...) Question Comment avoir du bare metal ? Machine Virtuelle : On va séparrer les ressources Physique en plusieurs ressources Virtuels. Mais elles sont peu flexibles car allouées. Quels sont les logiciels de Virtu? (Qemu,Kvm,Esx,Proxmox, hyperV,...) Les containers sont entre les deux. On séparre les ressources mais on reste flexible et on ne perd pas trop de performances. Connaissez vous des technos de conteneurisations ? Réparer un système avec le "bon" contexte. C'est très utilisé dans le monde unix. registry.gitlab.com/valbaraise/docker/hello-world:latest Première étape il essaye de récupérer une image "localement" Dans notre cas il ne trouve pas l'image. Du coup il va lé récupérer depuis un "repository" externe Une fois récupéré on vérifie l'empreinte et on indique qu'on a récupérer l'image "latest" Finalement on a du texte qui est affiché. Mais... pourquoi ? qui est ce qui nous affiche ce message? Comment peut on trouver notre image Ici j'attends d'avoir des réponses pour parler avec les étudiants Effectivement si on en lance plusieurs et qu'on refait la commande "ps" nous voyons les autres conteneurs apparaitre Est ce que vous y arrivez ? Question : Maintenant qu'ils sont en mode "stopped" est il possible de les redémarre ? Ou faut il recréer des containers obligatoirement ? Si vous faites un docker ps vous ne verrez plus le container que vous venez de lancer. C'est par que dans ce cas, la commande ctrl+c est envoyé au container et le process "clock" lorsqu'il recoit un ctrl+c il s'arrète Lorsqu'on fait du listing d'image on va pouvoir remarquer plusieurs choses. La source La taille La date de création Je n'en parlerais pas ici car le temps ne me le permet pas. Peut etre a la fin du cours