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

Form analysis 0 forms found in the DOM

Text 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