Cette présentation s'adresse aussi bien aux débutants qu'aux utilisateurs de Docker cherchant à en découvrir de nouveaux aspects.
- caractéristiques de Docker et écosystème
- cas d'usage : création d’environnement automatisé pour le développement, déploiement et orchestration de conteneurs, Docker sous Windows
Présentation donnée dans le cadre du Festival Transfo 2019 http://www.festival-transfo.fr/evenement/145/14-docker-un-outil-pour-faciliter-le-developpement-et-le-deploiement-informatique.htm
Rejoindre le meetup des Matinales techniques de Sogilis : https://www.meetup.com/Les-matinales-techniques-de-Sogilis
2. ● sur des postes individuels
● ou dans le Cloud
https://docs.docker.com/engine/docker-overview/
“Docker est une plateforme pour
développer, déployer et exécuter
des applications”
2
5. Qu’est-ce qu’un conteneur ?
Docker = outils et écosystème pour conteneurs logiciels
Conteneurs logiciels = “virtualisation” par le système d’exploitation
5
6. Comment ça marche ?
Caractéristiques de la plateforme Docker
● uniformité de l’environnement
● légèreté de la solution
● orienté applicatif
6
7. Uniformité de l’environnement
Exécuter une application
● quelque soit la plateforme (desktop, Cloud, ...)
● même environnement (uniforme)
● reproductible
Avoir un comportement plus déterministe !
7
8. Uniformité par isolation
Namespaces
● isolation des ressources systèmes par conteneur (process,
network, …)
Union Filesystem
● Système de fichiers propre, dépendances isolées
● Optimisation en couches pour place et bande passante
8
9. Légèreté de la solution
Faire cohabiter sur le même système
● plusieurs applications/conteneurs
● à la demande
● en exploitant/maîtrisant au mieux les ressources
● sans interférence
9
10. Légèreté par intégration dans le noyau
Noyau partagé entre tous les conteneurs
● faible surcoût du système
Cgroups (Control groups)
● Contrôle de l’usage des ressources par conteneur (CPU,
mémoire…)
10
13. Engine, Compose, Machine, Swarm, Stack...
● Engine = moteur Docker (démon Docker + client CLI)
● Compose = application avec plusieurs services en conteneurs
● Machine = provision de machines Docker
● Swarm = cluster de machines Docker
● Stack = déploiement d’application (Compose) sur Swarm
13
14. Dockerfile & docker build
Système de build pour images de conteneur
● Dockerfile = format déclaratif (FROM, COPY, RUN,
ENTRYPOINT…)
○ FROM = image parente (OS, socle technique)
○ COPY = copie de ressources dans l’image
○ RUN = lancement de commandes pour provisioner, compiler, nettoyer
○ ENTRYPOINT = commande par défaut du conteneur
● docker build = commande de création
○ en local
○ sur une CI
14
15. Registry & Docker Hub
Registry = service de dépôts d’images Docker à réutiliser
● docker push publie l’image
● docker pull récupère l’image
Docker Hub est le service “public” de dépôt
● images de tout calibre (distributions, services, applications, ...)
15
17. “Docker est une plateforme pour
développer, déployer et exécuter
des applications”
17
18. Démarrer un projet rapidement
● Construire son propre conteneur
● Installer des services, des dépendances
● Lancer son application avec tous les services
18
21. Faire des tests d’intégration
● Moins dépendre de l’infrastructure
○ Faciliter le lancement des services de l’application
○ Simuler une partie des services
● Partager des jeux de tests reproductibles
● Tester migration, portabilité des frameworks, systèmes, etc.
21
22. Créer des environnements de développement
● Installation facilitée des outils
○ 1 seule dépendance (Docker) et des images à télécharger
○ outils déjà configurés pour le projet
● Lancement plus uniforme des commandes
○ build
○ tests
● Sur différents environnements
○ poste local développeur (Linux, Windows, OSX)
○ serveur d’intégration continue
22
24. Caveats
24
On ne veut pas être complètement isolé du système hôte !
● Partage des fichiers sources
=> droits des fichiers créés dans les conteneurs
● Partage de ressources systèmes
=> lancement d’interfaces graphiques, connexion USB
25. “Docker est une plateforme pour
développer, déployer et exécuter
des applications”
25
26. Intégration continue sous Docker
● Solution intégrée NAS + Docker
● Installer Jenkins = conteneur Docker
● Lancer des conteneurs Docker sous Docker
docker run -v /var/run/docker.sock:/var/run/docker.sock
26
27. Docker facilite l’automatisation du déploiement ...
● Le déploiement est le même quelque soit la technologie
● Intègre un système de version (tag)
● Les dépendances sont intégrés directement dans les images
● Des outils permettent d’exprimer des dépendances entre les
containers
○ docker-compose
○ les orchestrateurs
27
28. … tout en utilisant mieux les ressources disponibles
● Permet de simplifier le provisionning des machines
○ Les machines deviennent plus interchangeable. Les services migrent plus
facilement de serveurs. Les pannes matériel sont moins “grave”.
● Travaille en complément des machines virtuelles
○ Les VMs optimisent l’utilisation du hardware
○ Les container optimisent l’utilisation de l’OS
■ Contrôle de la consommation en ressources des container
■ Permet d'exécuter plus de services sur un même nombre de machine
28
29. “Docker est une plateforme pour
développer, déployer et exécuter
des applications”
29
31. Docker sous Windows
Type de container:
● windows server
● hyper-v : docker run --isolation=hyperv
Image basée sur :
● windows server (2016)
● nano server
31
33. Orchestrateur de containers
● Gérer le cycle de vie des containers
○ Contrôle et automatisations des tâches:
■ création et déploiements dans des environnements dynamiques
■ allocation des ressources (CPU/Mémoire) entre containers
■ mise à échelle
● Systèmes déclaratif :
○ être capable d’observer le system
○ configuration en yaml ou json
33
35. Orchestrateurs dans le cloud
● AWS :
○ AKS : kubernetes gérer par AMAZON
○ ECS : solution maison
● AZURE:
○ Azure Container Service avec Mesos
○ Azure kubernetes Service
○ Docker Swarm (deprecated)
● Google:
○ Google kubernetes engine
○
=> nécessité d’utiliser une docker registry
35