Introduction à Docker [Partie 2]

Après avoir parlé de quelques notions généralistes et théoriques sur Docker dans la partie 1, nous allons maintenant pratiquer Docker.

Après avoir récupéré Docker pour Windows, nous effectuerons nos premières manipulations sur les conteneurs et les images.

Installer Docker sous Windows

Tout d’abord, il vous faudra télécharger la dernière version sur le site de Docker https://docs.docker.com/docker-for-windows/install/

Une fois que Docker est téléchargé (et votre ordinateur redémarré), nous pourrons confirmer son installation en vérifiant la version de Docker installée sur notre poste grâce à la commande :

docker --version

Pour connaître le répertoire d’installation de Docker, il faudra saisir la commande :

where docker

En allant dans ce répertoire, on se rend compte qu’il y a plusieurs applications Docker installés (notamment Docker Compose dont nous parlions dans la partie 1).
Le serveur Docker est quant à lui disponible dans le répertoire parent avec l’application dockerd.exe.

Pour avoir des informations sur l’installation de Docker sur ce PC et de son utilisation, saisissez la commande :

docker info

Il est d’ailleurs possible de voir que le type d’OS prévu par notre installation est Linux car il s’agit du premier type de conteneur prévu par Docker à l’origine.

Enfin, pour avoir des informations sur le client et le serveur Docker installés sur notre machine, il faudra saisir :

docker version

On peut voir que notre client correspond bien à la version de notre système d’exploitation tandis que le serveur correspond à l’instance Linux du Docker Engine qui tourne sur notre machine (cf. Hyper-V qui le montre ?).

Lancer son premier conteneur Docker

Avant de nous lancer dans le démarrage de notre premier conteneur, il serait utile de savoir si il y a déjà des conteneurs en train de tourner sur notre machine :

docker ps

Vous noterez l’utilisation d’une syntaxe linuxienne avec la commande PS (pour Process Status) permettant d’afficher l’ensemble des processus d’une machine.

Essayons maintenant de démarrer une des images les plus simples de Docker qui est proposée lors de l’installation de Docker pour Windows : l’image hello-world. Pour ce faire, il suffit d’exécuter la commande suivante :

docker run hello-world

On voit que Docker ne trouve pas l’image dans notre registry (puisque nous ne l’avons pas téléchargé) et va donc la récupérer depuis le registry du DockerHub directement. Le message qui suit indique que le téléchargement et le lancement de l’image se sont effectués correctement. Vous venez de lancer votre première image Docker.

Démarrer un serveur web Nginx via un conteneur Docker

Désormais, nous voudrions démarrer une image de serveur web, type Nginx, sur un conteneur afin de pouvoir s’y connecter via notre navigateur :

docker run -p 70:80 nginx


L’installation de l’image va récupérer toutes les dépendances de l’image afin de pouvoir construire ce conteneur puis va ensuite le démarrer.

Nous avons spécifié un argument supplémentaire dans notre commande -p. Celui-ci permet de spécifier quel sera le port utilisé par le containeur en interne (port 80) et le port externe grâce à lequel nous pourrons communiquer avec le serveur (port 70).

Vous pourrez le confirmer en vous connectant à votre connecteur/serveur Nginx via http://localhost:70

Attention : le CTRL-C dans le containeur ne tuera pas le serveur web. En effet, l’image Docker continuera de tourner tant que vous ne l’aurez pas stoppée (docker ps pour voir les images en train de tourner).

Une commande docker stop sera donc nécessaire afin de stopper l’image :

docker stop vigilant_beaver

On se doute que la manipulation nécessaire pour faire tourner ce serveur web en local aurait été probablement plus fastidieuse que de lancer une seule ligne de commande !

Docker simplifie grandement l’installation d’applications et leur utilisation comme vous pouvez le constater. Il permet également un degré d’abstraction qui permet de ne pas se soucier des opérations qui seront réalisées pour le lancement d’un service.

Relancer une image Docker

Une fois terminée, l’image Docker est toujours visible dans Docker… à l’état terminé :

docker ps -a

Pour relancer notre image, il n’est pas nécessaire d’utiliser à nouveau la commande run. En effet, celle-ci lancera une nouvelle instance de l’image.

docker start vigilant_beaver

Supprimer un containeur

Une fois que votre conteneur est stoppé, il est possible de le supprimer via la commande suivante :

docker rm vigilant_beaver

Attention à la confusion entre containeur et image : les containeurs contiennent des images (et pas l’inverse :)). Nous venons donc de supprimer un conteneur de l’image Nginx mais pas l’image elle-même (ce que l’on peut confirmer avec un docker images).

Supprimer une image

Pour lister la liste des images que nous avons à disposition, il suffit d’exécuter la commande suivante :

docker images

Dans la liste des images Docker installées sur notre poste, nous souhaitons supprimer l’image Hello-World.
Pour ce faire, il faut utiliser la commande docker rmi afin de procéder à la suppression de l’image.

Attention : l’image ne doit être liée à aucun conteneur afin de pouvoir être supprimée (même les conteneurs stoppés). Après avoir stoppé les conteneurs liés à cette image, il faudra exécuter la commande suivante :

docker rmi nginx

Commandes supplémentaires

Avoir des informations supplémentaires sur l’image en question

docker inspect nginx

Lancer le containeur au premier plan.

docker run -it nginx

C’est à dire que lorsque vous sortirez de l’invite de commande, le containeur stoppera de lui-même.

Lancer le containeur en mode « détaché »

docker run -d nginx

On utilise cette commande pour revenir dans l’invite de commande immédiatement après avoir lancé le containeur qui continuera de s’exécuter en fond.

Spécifier un nom pour le conteneur

docker run --name toto nginx

Télécharger une image

docker pull nginx

Lancer un containeur Windows ?

Dans la barre de notification de Windows, vous trouverez l’icône de Docker qui vous permettra d’activer l’option Switch to Windows containers afin de réaliser cette action. [copie d’écran]
Il faudra redémarrer votre PC pour que le superviseur Hyper-V le prenne en compte.

Conclusion

Dans cette deuxième partie, on aura pu voir à quel point Docker est facile à prendre en main et que la gestion du cycle de vie d’un containeur est simplifié via l’utilisation des commandes que nous avons vu ensemble.

Les étapes classiques de gestion d’un applicatif tels que le téléchargement, l’installation, le lancement, l’arrêt, la désinstallation, etc sont grandement simplifiés avec l’utilisation d’un containeur d’application indépendant.

Avatar

(8 Posts)

Né avec une souris dans la main, j'ai baigné depuis petit dans l'informatique. Docteur en physique de formation, je me suis formé tout au long de ma carrière de développeur pour répondre à des besoins toujours plus exigeants. Je me revendique Artisan Développeur ce qui retranscrit ma passion pour le code bien fait et façonné avec rigueur. Sinon je suis aussi un mari et papa comblé, joueur de guitare.

Leave a Reply

Your email address will not be published. Required fields are marked *