virli/tutorial/1/what.md

71 lines
2.8 KiB
Markdown
Raw Normal View History

2016-09-08 01:44:20 +00:00
\newpage
Composition de Docker
=====================
2017-10-04 07:00:58 +00:00
Docker est un écosystème d'outils de haut niveau, permettant d'utiliser des
*conteneurs*.
2016-09-08 01:44:20 +00:00
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 au travers d'une socket, le client peut ne
2016-09-08 02:40:34 +00:00
pas être sur la même machine qui exécutera effectivement les conteneurs.
2016-09-08 01:44:20 +00:00
2016-09-08 02:40:34 +00:00
C'est ce qu'il se passe lorsqu'on utilise *Docker4Windows* ou *Docker4Mac* :
une machine virtuelle Linux est lancé parallèlement au système de base et
chaque commande `docker` tappée est passée au deamon dans la machine virtuelle.
2016-09-08 01:44:20 +00:00
## `runc` et `containerd`
2016-09-08 02:40:34 +00:00
La notion de conteneurs est maintenant normalisée par
2016-09-08 01:44:20 +00:00
[l'Open Container Initiative](https://opencontainers.org).
Docker lance des conteneurs respectant cette norme grâce au programme `runc`.
2016-09-08 02:40:34 +00:00
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é
2016-09-08 01:44:20 +00:00
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
2016-09-08 02:40:34 +00:00
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.
2016-09-08 01:44:20 +00:00
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êt à
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 est
temporaire : l'image n'est pas modifié par l'exécution d'un conteneur.
Chaque conteneur s'exécute dans un environnement restreint et distinct de
2016-09-08 02:40:34 +00:00
l'environnement principal (où vous avez votre bureau). Par exemple, dans cet
environnement, vous ne pouvez pas voir les processus qui sont situé en dehors,
ni accéder aux fichiers extérieurs.
2016-09-08 01:44:20 +00:00
## 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
2016-09-08 02:40:34 +00:00
d'en envoyer.
2016-09-08 01:44:20 +00:00
Le registre utilisé de base est le [Docker Hub](https://hub.docker.com/) : il
contient à la fois des images officielles (ubuntu, debian, nginx, ...) et des
images crées par des utilisateurs.