# Formation Docker ## Programme ### Conteneurs - Qu'est-ce qu'un conteneur ? - Historique de la conteneurisation - Différence entre conteneur et VM - Technologies sous-jacentes - Opérations de base sur les conteneurs - Mise en réseau d'un conteneur - Configuration d'une application conteneurisée ### Images de conteneurs - Qu'est-ce qu'une image Docker ? - DockerHub - Création d'une image via docker commit - Création d'une image via Dockerfile - Bonnes pratiques pour la construction des images - Note de couches pour le stockage des images - Intérêt des tags pour le versionning des images - Stockage et transport des images (Registry) ### Persistence des données - Volumes Docker - Bind mounts ### Gestion d'une stack applicative - Déploiement d'une application multi-conteneurs avec docker-compose ### Orchestration - Principes et intérêt d'un orchestrateur - Panorama des principales solutions d'orchestration - Fonctionnalités et principaux concepts de Docker Swarm - Initialisation d'un cluster minimal - Déploiement d'une stack applicative en utilisant les services Swarm - Déploiement d'une stack applicative en utilisant une stack Swarm - Mettre à l'échelle une application et répartir la charge - Gestion des données sensibles - Déployer un Registry local - Installation et prise en main d’une interface graphique d’administration ## Slides | Module | Format | | :- | :- | | 0. Introduction à la formation | [html](0.introduction-formation/index.html) | | 1. Introduction aux conteneurs | [html](1.introduction-aux-conteneurs/index.html) - [markdown](1.introduction-aux-conteneurs/introduction-aux-conteneurs.md) - [pdf](https://gitlab.sii.fr/sii-ouest/trainings/docker/-/jobs/artifacts/master/raw/1.docker.introduction-aux-conteneurs.pdf?job=build-pdf-introduction-aux-conteneurs) | | 2. Images de conteneurs | [html](2.images-de-conteneurs/index.html) - [markdown](2.images-de-conteneurs/images-de-conteneurs.md) - [pdf](https://gitlab.sii.fr/sii-ouest/trainings/docker/-/jobs/artifacts/master/raw/2.docker.images-de-conteneurs.pdf?job=build-pdf-images-de-conteneurs) | | 3. Conteneurs : utilisation avancée | [html](3.conteneurs-utilisation-avancee/index.html) - [markdown](3.conteneurs-utilisation-avancee/conteneurs-utilisation-avancee.md) - [pdf](https://gitlab.sii.fr/sii-ouest/trainings/docker/-/jobs/artifacts/master/raw/3.docker.conteneurs-utilisation-avancee.pdf?job=build-pdf-conteneurs-utilisation-avancee) | | 4. Docker Swarm | [html](5.swarm/index.html) - [markdown](5.swarm/swarm.md) - [pdf](https://gitlab.sii.fr/sii-ouest/trainings/docker/-/jobs/artifacts/master/raw/5.docker.swarm.pdf?job=build-pdf-swarm) | | 5. Outils d'administration | [html](6.outils-administration/index.html) - [markdown](6.outils-administration/outils-administration.md) | | 6. Monitoring de conteneurs | [html](7.monitoring-conteneurs/index.html) - [markdown](7.monitoring-conteneurs/monitoring-conteneurs.md) | ## Travaux pratiques 1. [Les bases](travaux-pratiques/slides/docker/tp-docker-introduction.html) 2. [Le réseau](travaux-pratiques/slides/docker/tp-network.html) 3. [Les images](travaux-pratiques/slides/docker/tp-images.html) 4. [Dockerfile](travaux-pratiques/slides/docker/tp-dockerfile.html) 5. [Les volumes](travaux-pratiques/slides/docker/tp-volumes.html) 6. [Application complète](travaux-pratiques/slides/docker/tp-web-db.html) 7. [Application complète avec Docker Compose](travaux-pratiques/slides/docker/tp-compose.html) 8. [Initialisation d'un cluster Swarm](travaux-pratiques/slides/swarm/tp-swarm-init.html) 9. Le réseau Overlay 10. [Déploiement d'applications - Services - Stacks](travaux-pratiques/slides/swarm/tp-swarm.html) 11. [Gestion des données sensibles](travaux-pratiques/slides/swarm/tp-secrets.html) 12. [Mise à jour d'une application](travaux-pratiques/slides/swarm/tp-rolling-update.html) ## Jouer les slides en local 1. Cloner le dépôt : `git clone --recurse-submodules https://gitlab.sii.fr/sii-ouest/trainings/docker.git` `cd docker` 2. Lancer le serveur : `docker run --rm -p 127.0.0.1:8080:80 --name http -v "$(pwd)":/usr/local/apache2/htdocs:ro httpd` 3. Ouvrir la page dans le navigateur : `firefox http://127.0.0.1:8080` __Note concernant les utilisateurs de systèmes Windows__ * Des problèmes existent dans la gestion des liens symboliques avec Git, il faudra peut-être dupliquer le dossier `revealjs` à l'intérieur de chacun dossier contenant une présentation. * Des problèmes de rendu peuvent exister sur les postes Windows, à cause des délimiteurs de fin de lignes. Il faut donc paramétrer `git` avec le paramètre `core.autocrlf` à la valeur `false`.