Architecture à base de conteneurs
Evolution de la virtualisation
Avantages et inconvénients
Installation native
- Les applications peuvent
nécessiter des bibliothèques ou
des extensions différentes,
accéder aux mêmes chemins sur
le filesystem…
- La MAJ de l’OS peut avoir un
impact sur les applications qui
tournent dessus.
- La MAJ d’une application peut
avoir un impact sur les autres.
Virtualisation matérielle
+ Niveau d’isolation élevée
- Poids de la machine virtuelle
important. Consommation de mémoire
élevée
Architecture à conteneurs
Solution de compromis.
+ Niveau d’isolation élevée
+ Léger
- MAJ de l’OS hôte peut affecter les
conteneurs qu’il exécute
Docker
Fonctionnement et apports
Qu’est-ce qu’un conteneur ?
Un système de fichiers sur lequel s’exécutent des processus (de préférence un
par conteneur) de manière :
- Contrainte (CGroups)
- Isolée (Namespaces)
libcontainer, développé par Docker, est un driver qui fait le pont entre le moteur
d’exécution des conteneurs et le système d’exploitation. Il se base sur deux
extensions du kernel Linux : CGroups et Namespaces.
CGroups
Permet d’isoler l’utilisation des ressources d’un hôte (processeur, mémoire, accès
disque, accès réseau…). CGroups contrôle la consommation de ces ressources
par processus.
Namespaces
Apporte l’isolation nécessaire à la création de conteneur. Fait en sorte que les
processus ne voient pas les ressources utilisées par d’autres.
IPC (communications entre les processus)
Network (réseau)
Mount (points de montage)
PID (identifiants de processus)
User (utilisateurs et groupes)
UTS (noms de domaine)
Docker
Les conteneurs existent depuis longtemps (LXC, août 2008).
Docker vient apporter :
- Optimisation de la taille des conteneurs
- Persistence des données
- Outils (dockerfile)
- Ecosystème (docker engine, docker compose, docker swarm…)
Les images
Conditionnement du contenu d’un conteneur en blocs réutilisables et
interchangeables.
Archives qui peuvent être échangées et ré-utilisées.
Organisation en layers
L’empilement ordonné de plusieurs couches constitue un conteneur.
Volumes
Les données écrite sont produites dans le conteneur layer.
Quand un conteneur s’arrête, la couche de conteneur est perdue. Si elle contient
des données à conserver entre deux lancements de conteneurs ou bien à
partager entre plusieurs conteneurs, il faut utiliser un volume.
Un volume est un espace de données qui court-circuite le Union File System.
Les données sont modifiées directement dans un répertoire de l’hôte monté dans
le conteneur.
Docker engine
Ligne de commande
Capacité de nommer, découvrir et gérer le cycle de vie des conteneurs
Capacité à créer des conteneurs à partir d’image ou de modèle
API et SDK (python, go)
Registry
Annuaire et centre de stockage des images réutilisables.
Public : https://hub.docker.com/
Privé : https://hub.docker.com/_/registry/
D’autres acteurs s’y mettent :
- Amazon : https://aws.amazon.com/fr/ecr/
- Google : https://cloud.google.com/container-registry/
- Microsoft : https://azure.microsoft.com/en-us/services/container-registry/
Composition et clustering
Docker compose
Associer les conteneurs les uns aux autres.
Docker swarm
Gérer un ensemble d’hôtes disposant d’une instance de docker engine.
Docker machine
Outil de pilotage (installation, configuration) distant d’hôtes avec docker.

Docker

  • 1.
    Architecture à basede conteneurs
  • 2.
    Evolution de lavirtualisation Avantages et inconvénients
  • 3.
    Installation native - Lesapplications peuvent nécessiter des bibliothèques ou des extensions différentes, accéder aux mêmes chemins sur le filesystem… - La MAJ de l’OS peut avoir un impact sur les applications qui tournent dessus. - La MAJ d’une application peut avoir un impact sur les autres.
  • 4.
    Virtualisation matérielle + Niveaud’isolation élevée - Poids de la machine virtuelle important. Consommation de mémoire élevée
  • 5.
    Architecture à conteneurs Solutionde compromis. + Niveau d’isolation élevée + Léger - MAJ de l’OS hôte peut affecter les conteneurs qu’il exécute
  • 6.
  • 7.
    Qu’est-ce qu’un conteneur? Un système de fichiers sur lequel s’exécutent des processus (de préférence un par conteneur) de manière : - Contrainte (CGroups) - Isolée (Namespaces) libcontainer, développé par Docker, est un driver qui fait le pont entre le moteur d’exécution des conteneurs et le système d’exploitation. Il se base sur deux extensions du kernel Linux : CGroups et Namespaces.
  • 8.
    CGroups Permet d’isoler l’utilisationdes ressources d’un hôte (processeur, mémoire, accès disque, accès réseau…). CGroups contrôle la consommation de ces ressources par processus.
  • 9.
    Namespaces Apporte l’isolation nécessaireà la création de conteneur. Fait en sorte que les processus ne voient pas les ressources utilisées par d’autres. IPC (communications entre les processus) Network (réseau) Mount (points de montage) PID (identifiants de processus) User (utilisateurs et groupes) UTS (noms de domaine)
  • 10.
    Docker Les conteneurs existentdepuis longtemps (LXC, août 2008). Docker vient apporter : - Optimisation de la taille des conteneurs - Persistence des données - Outils (dockerfile) - Ecosystème (docker engine, docker compose, docker swarm…)
  • 11.
    Les images Conditionnement ducontenu d’un conteneur en blocs réutilisables et interchangeables. Archives qui peuvent être échangées et ré-utilisées.
  • 12.
    Organisation en layers L’empilementordonné de plusieurs couches constitue un conteneur.
  • 13.
    Volumes Les données écritesont produites dans le conteneur layer. Quand un conteneur s’arrête, la couche de conteneur est perdue. Si elle contient des données à conserver entre deux lancements de conteneurs ou bien à partager entre plusieurs conteneurs, il faut utiliser un volume. Un volume est un espace de données qui court-circuite le Union File System. Les données sont modifiées directement dans un répertoire de l’hôte monté dans le conteneur.
  • 14.
    Docker engine Ligne decommande Capacité de nommer, découvrir et gérer le cycle de vie des conteneurs Capacité à créer des conteneurs à partir d’image ou de modèle API et SDK (python, go)
  • 15.
    Registry Annuaire et centrede stockage des images réutilisables. Public : https://hub.docker.com/ Privé : https://hub.docker.com/_/registry/ D’autres acteurs s’y mettent : - Amazon : https://aws.amazon.com/fr/ecr/ - Google : https://cloud.google.com/container-registry/ - Microsoft : https://azure.microsoft.com/en-us/services/container-registry/
  • 16.
    Composition et clustering Dockercompose Associer les conteneurs les uns aux autres. Docker swarm Gérer un ensemble d’hôtes disposant d’une instance de docker engine. Docker machine Outil de pilotage (installation, configuration) distant d’hôtes avec docker.