Plongez dans la révolution des containers Docker : premiers pas
Cet article est constitué à partir de bonnes feuilles issues de l'ouvrage "Docker, Prise en main et mise en pratique sur une architecture micro-services" de Jean-Philippe Gouigoux, publié chez ENI en octobre 2015.
Le registre Docker
En pratique, utiliser des conteneurs existants au lieu de créer les siens propres représente même la majorité des usages.
Le succès de Docker tient en effet non seulement à l'outil en lui-même, mais également pour une grande part dans le fait que Docker – aidé d'une abondante communauté – met à disposition du public un grand nombre d'images préconstruites. Il est ainsi possible de déployer des conteneurs avec Apache, Nginx, PostgreSQL, MongoDB, WordPress et des centaines d'autres serveurs et applications, et ce par une simple commande éventuellement accompagnée du paramétrage adéquat.
Le site https://registry.hub.docker.com/ donne accès à ces images :
Images officielles
La page de recherche permet de parcourir la foule d'images à disposition. Afin que la masse des images publiées par des utilisateurs et sans intérêt particulier ne rende pas trop complexe la recherche des images "standards", Docker a mis en oeuvre deux dispositions.
- La première est un système de notation des images par la communauté. Plus une image reçoit d'étoiles, plus sa qualité est reconnue.
- La seconde est que certaines images – comme celles que nous avons étudiées pour l'instant – sont désignées par un nom qui n'est pas préfixé par celui de leur propriétaire. Il s'agit d'images officielles, supportées par Docker.
Par exemple, l'image officielle pour la distribution Ubuntu est nommée Ubuntu dans le registre Docker. Ce nom est équivalent à sa forme longue, à savoir library/ubuntu. C'est d'ailleurs la raison pour laquelle le lien vers la page de recherche depuis la page d'accueil du Docker Hub établit un préfiltre sur le mot-clé library :
La liste des images officielles est maintenue sur le dépôt GitHub nommé docker-library/official-images (https://github.com/dockerlibrary/official-images) :
Remarque
Notez que Docker Hub utilise la même convention de nommage que GitHub pour ses dépôts, avec un préfixe portant le nom du compte du propriétaire, séparé par un symbole de barre oblique.
Autres images
En plus de ces images officielles, le registre Docker contient des milliers d'images construites par des utilisateurs et déposées de manière publique, de façon que d'autres puissent les utiliser, voire s'en servir de base pour créer de nouvelles images plus sophistiquées.
Bien sûr, la qualité n'est pas toujours au rendez-vous et le registre comporte son lot d'images réalisées à la va-vite, et déposées sur Docker Hub non pas pour servir de référence, mais simplement parce que cela représente un moyen simple et gratuit de véhiculer une image construite sur un serveur vers une autre machine hôte. Néanmoins, le système d'étoiles permet de rapidement se faire une idée de la qualité de l'image. Imaginons par exemple que nous cherchons une image contenant le serveur web Apache. Une recherche nous ramènera une liste importante, mais le tri par pertinence nous permet de rapidement cibler les images les plus utilisées et les mieux notées :
Les statistiques d'usage et les notations ne sont toutefois pas des preuves absolues de la qualité des images. Il conviendra donc, lors d'usages en production, de plutôt repartir du fichier Dockerfile décrivant l'image, de bien le comprendre et de le recompiler soi-même pour éviter les risques.
[A noter : Docker a également lancé un système de certification, conçu pour certifié l'origine d'un container]
Recherche par la ligne de commande
Le client Docker permet également de rechercher des images en fonction de mots-clés.
Rechercher une image Docker
docker search --stars=5 nginx
L'exécution de cette commande entraîne la recherche de toutes les images contenant le mot-clé nginx et disposant d'au moins cinq étoiles en notation. Elle aboutit à l'affichage suivant, ou quelque chose d'approchant :
Les colonnes d'informations renvoient :
- Le nom de l'image. Noter en particulier que la première image – donc la mieux notée, le tri se faisant par le nombre d'étoiles descendant – est composée uniquement du mot nginx, sans préfixe correspondant à un propriétaire. Il s'agit, comme nous l'avions expliqué, de la convention pour nommer les images officielles. Sauf besoin particulier, si nous avons besoin d'un conteneur avec le serveur web Nginx, c'est cette image que nous utiliserions.
- La description de l'image, encouragée lors du dépôt de l'image, de façon que les utilisateurs potentiels puissent connaître les particularités de l'image. Par défaut, l'affichage est tronqué, mais l'option --no-trunc=true permet de voir les descriptions complètes si besoin.
- Le nombre d'étoiles.
- Une indication du caractère officiel de l'image.
- Une indication du fait que la compilation de l'image a été réalisée de manière automatique.

Remarque
La commande pourrait également s'écrire avec la forme raccourcie de l'option --stars, à savoir -s. Pour des raisons de clarté, nous utiliserons systématiquement dans le livre la forme complète des options, et renvoyons le lecteur à l'aide de la ligne de commande pour retrouver l'équivalent court éventuel. En pratique, c'est souvent la forme raccourcie qui est utilisée pour accélérer l'entrée des commandes. Le symbole = peut être remplacé par un espace.
Obtenir la liste des commandes du client Docker
docker help
Obtenir de l'aide sur les options d'une commande
docker help nom_de_la_commande
Précautions sur une image non officielle
Une image non officielle peut venir de n'importe qui et contenir n'importe quelle fonctionnalité. Il convient donc de se sécuriser un minimum lors de sa mise en oeuvre. Bien sûr, l'étanchéité inhérente au mode de fonctionnement de Docker donne une certaine garantie de non-impact sur la machine hôte, mais cela n'empêche pas des comportements potentiellement dangereux dans le conteneur lui-même.
Prenons l'exemple de l'image jpgouigoux/mathapi. Une recherche sur le registre mène à la page d'accueil qui décrit rapidement ce qu'est censée réaliser l'image, comment l'utiliser et quelques propriétés supplémentaires.
Cet article est constitué à partir de bonnes feuilles issues de l'ouvrage "Docker, Prise en main et mise en pratique sur une architecture micro-services" de Jean-Philippe Gouigoux, publié chez ENI en octobre 2015.