Blog ENI : Toute la veille numérique !
💥 Un livre PAPIER acheté
= La version EN LIGNE offerte pendant 1 an !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Docker
  3. Premiers pas avec Docker
Extrait - Docker Concepts fondamentaux et déploiement d'applications conçues en services (2e édition)
Extraits du livre
Docker Concepts fondamentaux et déploiement d'applications conçues en services (2e édition)
1 avis
Revenir à la page d'achat du livre

Premiers pas avec Docker

Hello World, Docker

1. Démarrage d’un conteneur simple

Le sujet de l’installation de Docker étant désormais traité, il est temps de commencer enfin à explorer l’outil lui-même. Comme toute technologie informatique qui se respecte, Docker dispose d’un exemple "Hello World", soit dans notre cas un conteneur qui ne fait rien à part afficher un message de bienvenue. L’intérêt de ce genre d’approche est qu’il permet de valider que l’installation du produit s’est bien passée, de vérifier que l’ensemble de la chaîne logicielle fonctionne et de mettre le pied à l’étrier pour l’utilisateur débutant.

Démarrer un conteneur exemple minimaliste

docker run hello-world 

Dorénavant et pour la suite du livre, nous considérons que la gestion des droits est traitée. Ainsi, s’il est nécessaire de préfixer les commandes par le mot-clé sudo sous Linux, nous ne le montrerons plus dans les exemples. L’obtention d’un message comportant le texte "permission denied" ou une expression approchante doit donner le réflexe de rajouter le mot-clé si nécessaire ou de traiter le problème de sécurité. Dans le même souci de simplification, les exemples sont montrés sur Linux.

Sauf problème d’installation de Docker ou d’accès à Internet, l’affichage devrait être le suivant :

images/03EP01.png

2. Détails des opérations effectuées

Bien que l’exécution de la commande ci-dessus soit très rapide, il s’est passé un certain nombre d’opérations pour arriver à ce résultat. C’est d’ailleurs la raison d’être de Docker que de rendre disponible...

Utiliser des images Docker préexistantes

1. Le registre Docker Hub

a. Le principe

Le premier exemple d’exécution de Docker a été montré plus haut en utilisant une image existante, car il s’agit du moyen le plus simple de mettre en œuvre des conteneurs. 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 publique 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 Docker Hub, accessible sur https://hub.docker.com/, donne accès à ces images. Si vous êtes connecté au compte (voir plus loin la notion de compte Docker Hub), l’affichage par défaut est celui de vos images et il faut alors cliquer sur Explore pour avoir accès à la liste de toutes les images publiques mises à disposition par le registre Docker :

images/03EP18.png

Lors de la précédente édition du présent ouvrage, un effort avait été engagé par Docker pour promouvoir le Docker Store, qui était une version améliorée du Docker Hub donnant accès à des images payantes, traitées différemment de celles provenant de la communauté (et dont le foisonnement, il faut bien le reconnaître, rend parfois difficile de trouver la bonne image, sûre et adaptée au besoin). Il semble...

Un second conteneur

Après ce premier lancement d’un conteneur de type hello-world, ainsi que des digressions sur comment trouver des images déjà existantes sur le registre Docker Hub, nous allons passer à une deuxième étape consistant à lancer un conteneur un peu plus compliqué, avec lequel nous allons cette fois avoir une réelle interaction. L’image hello-world se contentait d’afficher un texte. Cela nous a permis d’aborder en douceur ce qui se passait en toile de fond, mais il est bien évident qu’un simple affichage n’est pas très utile.

Notre seconde manipulation consistera à écrire des fichiers dans un conteneur de type ubuntu. L’image ubuntu, comme son nom l’indique, contient simplement une installation minimaliste du système d’exploitation éponyme. Le fait que le nom ne soit pas préfixé signifie qu’il s’agit bien d’une image officielle.

1. Récupération de l’image

Nous allons commencer par simplement télécharger l’image, ce qui nous amènera à approfondir la notion d’étiquette (tag en anglais) que nous avons abordée précédemment.

Récupération d’une image dans sa dernière version

docker pull ubuntu:latest 

Le téléchargement prendra quelques secondes, voire minutes, en fonction de votre connexion internet. Toutefois, ce chargement d’image a lieu une fois pour toutes, et tout lancement suivant se basera sur cette image, y compris d’ailleurs - et c’est une des grandes forces de l’architecture par couches - toutes les images se basant sur celle-ci (et elles sont nombreuses, Ubuntu étant une distribution de base fréquemment utilisée pour d’autres images Docker, même si la tendance aujourd’hui...

Retours sur les premiers pas

Ce chapitre a exposé les principales commandes pour prendre en main Docker et aborder de manière sereine des usages plus industriels par la suite.

Il convient toutefois de noter que bien que nous soyons pour l’instant seulement en phase d’initiation, les usages réalisés sont déjà importants :

  • Nous avons créé des conteneurs étanches avec un système d’exploitation potentiellement différent de celui de la machine hôte.

  • Nous avons lancé des processus potentiellement dangereux dans un environnement jetable, rendant ainsi les premiers inoffensifs.

  • Nous avons exposé des fichiers statiques par un serveur web, et ce sans avoir à ferrailler avec une installation complexe.

  • Nous avons démarré et arrêté plus d’une douzaine d’environnements, le tout en quelques minutes de manipulation à peine.

Il s’agit bien d’une des grandes forces de Docker de permettre, dès les premières manipulations, de réaliser des opérations à forte valeur, car potentiellement complexes à réaliser sans cet outil. Nous pouvons d’ailleurs établir une comparaison avec les approches de type cloud.

Par leur approche locative, Amazon, Azure et les autres clouds permettent à des projets de petite taille d’accéder à des ressources informatiques qui auraient sans cela été hors de portée financièrement parlant.

De la même manière, Docker permet de monter des architectures logicielles complexes de façon simple, ce qui ouvre la voie à certains projets qui n’auraient pas eu ces compétences d’installation et de paramétrage de Nginx, MongoDB, etc. Les images disponibles sur Docker Hub permettent à tout un chacun de disposer...