Docker
un outil pour faciliter le développement
et le déploiement informatique
● 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
3
Caractéristiques
& Fonctionnement
4
Qu’est-ce qu’un conteneur ?
Docker = outils et écosystème pour conteneurs logiciels
Conteneurs logiciels = “virtualisation” par le système d’exploitation
5
Comment ça marche ?
Caractéristiques de la plateforme Docker
● uniformité de l’environnement
● légèreté de la solution
● orienté applicatif
6
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
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
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
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
Applicatif
Fournir un environnement orienté applicatif
Versus orienté machine/système
● build intégré, versions
● réutilisation, hébergement, partage d’images Docker
● écosystème applicatif = orchestration, monitoring
11
Outils & écosystème
12
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
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
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
Usages & Retours
d’expérience
16
“Docker est une plateforme pour
développer, déployer et exécuter
des applications”
17
Démarrer un projet rapidement
● Construire son propre conteneur
● Installer des services, des dépendances
● Lancer son application avec tous les services
18
Construire son propre conteneur
19
dockerFile
image Dockercontainer Docker
“layers”
Lancer son application avec tous les services
20
docker compose
container Docker
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
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
23
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
“Docker est une plateforme pour
développer, déployer et exécuter
des applications”
25
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
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
… 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
“Docker est une plateforme pour
développer, déployer et exécuter
des applications”
29
Docker sous Windows
architecture système
30
Docker sous Windows
Type de container:
● windows server
● hyper-v : docker run --isolation=hyperv
Image basée sur :
● windows server (2016)
● nano server
31
Docker sous windows
Windows subsystems for linux ?
32
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
Example Kubernetes
34
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
Merci pour votre attention !
36

Docker - un outil pour faciliter le développement et le déploiement informatique

  • 1.
    Docker un outil pourfaciliter le développement et le déploiement informatique
  • 2.
    ● sur despostes 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
  • 3.
  • 4.
  • 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écuterune 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 lasolution 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égrationdans 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
  • 11.
    Applicatif Fournir un environnementorienté applicatif Versus orienté machine/système ● build intégré, versions ● réutilisation, hébergement, partage d’images Docker ● écosystème applicatif = orchestration, monitoring 11
  • 12.
  • 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 & dockerbuild 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 & DockerHub 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
  • 16.
  • 17.
    “Docker est uneplateforme pour développer, déployer et exécuter des applications” 17
  • 18.
    Démarrer un projetrapidement ● Construire son propre conteneur ● Installer des services, des dépendances ● Lancer son application avec tous les services 18
  • 19.
    Construire son propreconteneur 19 dockerFile image Dockercontainer Docker “layers”
  • 20.
    Lancer son applicationavec tous les services 20 docker compose container Docker
  • 21.
    Faire des testsd’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 environnementsde 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
  • 23.
  • 24.
    Caveats 24 On ne veutpas ê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 uneplateforme pour développer, déployer et exécuter des applications” 25
  • 26.
    Intégration continue sousDocker ● 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’automatisationdu 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 enutilisant 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 uneplateforme pour développer, déployer et exécuter des applications” 29
  • 30.
  • 31.
    Docker sous Windows Typede container: ● windows server ● hyper-v : docker run --isolation=hyperv Image basée sur : ● windows server (2016) ● nano server 31
  • 32.
    Docker sous windows Windowssubsystems for linux ? 32
  • 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
  • 34.
  • 35.
    Orchestrateurs dans lecloud ● 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
  • 36.
    Merci pour votreattention ! 36