3.1 KiB
\newpage
Composition de Docker
Docker est un écosystème d'outils de haut niveau, permettant d'utiliser des conteneurs.
Docker est composé d'un daemon lancé au démarrage de votre machine, avec lequel
vous interagissez via un client (le programme docker
). La communication entre
le daemon et le client s'effectuant sur une API REST au travers d'une
socket. D'ailleurs, le client peut ne pas être sur la même machine qui
exécutera effectivement les conteneurs.
C'est ce qu'il se passe lorsqu'on utilise Docker4Windows ou Docker4Mac :
une machine virtuelle Linux est lancée parallèlement au système de base et
chaque commande docker
tapée est passée au deamon dans la machine virtuelle.1
runc
et containerd
La notion de conteneurs est maintenant normalisée par l'Open Container Initiative.
Docker lance des conteneurs respectant cette norme grâce au programme runc
.
Toute la gestion de l'exécution du conteneur est déléguée au programme
containerd
, également issu de l'initiative. Lui aussi est un daemon (géré
par Docker), dont le but est de monitorer les conteneurs lancés (pour les
relancer en cas de crash par exemple) ou encore de récupérer les logs de chaque
conteneur.
Les images Docker
Une image Docker est un système de fichiers en lecture seule. Elle est formée d'un ensemble de couches, agrégées selon le principe d'UnionFS.
Une image peut, par exemple, être un système Ubuntu complet ou juste contenir
le programme busybox
ou encore un serveur web et votre application web, prêts
à l'emploi.
Les images sont utilisées pour créer des conteneurs.
Il y a deux méthodes pour obtenir des images Docker : soit les construire avec les outils fournis, soit les récupérer depuis un registre.
Les conteneurs Docker
Alors que les images constituent la partie immuable de Docker, les conteneurs sont sa partie vivante. Chaque conteneur est créé à partir d'une image : à chaque fois que vous lancez un conteneur, une couche lecture/écriture est ajoutée au dessus de l'image. Cette couche est propre au conteneur et temporaire : l'image n'est pas modifiée par l'exécution d'un conteneur.
Chaque conteneur s'exécute dans un environnement restreint et distinct de l'environnement principal (où vous avez votre bureau). Par exemple, dans cet environnement, vous ne pouvez pas voir les processus qui sont situés en dehors, ni accéder aux fichiers extérieurs.
Les registres Docker (Docker registries)
Les registres sont des plates-formes de stockage, publiques ou privées, contenant des images. Ils permettent de récupérer des images, mais également d'en envoyer.
Le registre utilisé de base est le Docker Store : il contient à la fois des images officielles (ubuntu, debian, nginx, ...) et des images créées par des utilisateurs.
-
Il suffit de modifier la variable d'environnement
DOCKER_HOST
ou de passer le paramètre-H
suivi de l'URL de la socket àdocker
. Voir aussi : https://docs.docker.com/machine/overview/ ↩︎