Introduction
Docker est un outil de conteneurisation populaire utilisé pour fournir aux applications logicielles un système de fichiers contenant tout ce dont elles ont besoin pour s’exécuter. L’utilisation de conteneurs Docker garantit que le logiciel se comportera de la même manière, peu importe où il est déployé, car son environnement d’exécution est rigoureusement cohérent.
Dans ce tutoriel, nous fournirons un bref aperçu de la relation entre les images Docker et les conteneurs Docker. Ensuite, nous examinerons de manière plus détaillée comment exécuter, démarrer, arrêter et supprimer des conteneurs.
Vue d’ensemble
Nous pouvons considérer une image Docker comme un modèle inerte utilisé pour créer des conteneurs Docker. Les images commencent généralement avec un système de fichiers racine et ajoutent des modifications du système de fichiers et leurs paramètres d’exécution correspondants dans des couches ordonnées et en lecture seule. Contrairement à une distribution Linux typique, une image Docker contient normalement seulement les éléments essentiels nécessaires à l’exécution de l’application. Les images n’ont pas d’état et ne changent pas. Elles forment plutôt le point de départ des conteneurs Docker.
Les images prennent vie avec la commande docker run
, qui crée un conteneur en ajoutant une couche en lecture-écriture sur l’image. Cette combinaison de couches en lecture seule surmontée d’une couche en lecture-écriture est appelée un système de fichiers union. Lorsqu’une modification est apportée à un fichier existant dans un conteneur en cours d’exécution, le fichier est copié de l’espace en lecture seule dans la couche en lecture-écriture, où les modifications sont appliquées. La version dans la couche en lecture-écriture cache le fichier d’origine mais ne le supprime pas. Les modifications dans la couche en lecture-écriture n’existent que dans une instance de conteneur individuelle. Lorsqu’un conteneur est supprimé, toutes les modifications sont perdues à moins que des mesures ne soient prises pour les préserver.
Comment travailler avec les conteneurs Docker
Travailler avec des conteneurs
Chaque fois que vous utilisez la commande docker run
, elle crée un nouveau conteneur à partir de l’image que vous spécifiez. Cela peut être une source de confusion, alors regardons quelques exemples :
Étape 1 : Création de deux conteneurs
La commande docker run
suivante va créer un nouveau conteneur en utilisant l’image de base ubuntu
. -t
nous donnera un terminal, et -i
nous permettra d’interagir avec lui. Nous nous appuierons sur la commande par défaut dans le fichier Docker de l’image de base Ubuntu, bash
, pour nous placer dans un shell.
Le prompt de ligne de commande change pour indiquer que nous sommes à l’intérieur du conteneur en tant qu’utilisateur root, suivi de l’ID du conteneur sur 12 caractères.
Nous allons apporter une modification en écrivant du texte dans le répertoire /tmp
du conteneur, puis utiliser cat
pour vérifier qu’il a été enregistré avec succès.
OutputExample1
Maintenant, quittons le conteneur.
Les conteneurs Docker s’arrêtent dès que la commande qu’ils ont émise est terminée, donc notre conteneur s’est arrêté lorsque nous avons quitté le shell bash. Si nous exécutons docker ps
, la commande pour afficher les conteneurs en cours d’exécution, nous ne verrons pas le nôtre.
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Si nous ajoutons le drapeau -a
, qui affiche tous les conteneurs, arrêtés ou en cours d’exécution, alors notre conteneur apparaîtra dans la liste:
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
11cc47339ee1 ubuntu "/bin/bash" 6 minutes ago Exited (127) 8 seconds ago small_sinoussi
Lorsque le conteneur a été créé, il a reçu son ID de conteneur et un nom généré aléatoirement. Dans ce cas, 11cc47339ee1 est l’ID du conteneur et small_sinoussi
est le nom généré aléatoirement. ps -a
montre ces valeurs, ainsi que l’image à partir de laquelle le conteneur a été construit (ubuntu
), quand le conteneur a été créé (il y a six minutes
), et la commande qui a été exécutée dedans (/bin/bash
). La sortie fournit également le statut du conteneur (Exited
) et depuis combien de temps le conteneur est dans cet état (il y a 6 secondes
). Si le conteneur était toujours en cours d’exécution, nous verrions le statut « Up », suivi de la durée pendant laquelle il était en cours d’exécution.
Si nous relançons la même commande, un nouveau conteneur est entièrement créé:
Nous pouvons dire que c’est un nouveau conteneur car l’ID dans l’invite de commande est différente, et lorsque nous cherchons notre fichier Example1, nous ne le trouverons pas:
Outputcat: /tmp/Example1: No such file or directory
Cela peut donner l’impression que les données ont disparu, mais ce n’est pas le cas. Nous allons maintenant quitter le deuxième conteneur pour voir qu’il, ainsi que notre premier conteneur avec le fichier que nous avons créé, sont tous deux sur le système.
Lorsque nous listons à nouveau les conteneurs, les deux apparaissent:
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6e4341887b69 ubuntu "/bin/bash" About a minute ago Exited (1) 6 seconds ago kickass_borg
11cc47339ee1 ubuntu "/bin/bash" 13 minutes ago Exited (127) 6 minutes ago small_sinoussi
Étape 2 : Redémarrer le premier conteneur
Pour redémarrer un conteneur existant, nous utiliserons la commande start
avec le drapeau -a
pour s’y attacher et le drapeau -i
pour le rendre interactif, suivi soit de l’ID du conteneur ou de son nom. Assurez-vous de substituer l’ID de votre conteneur dans la commande ci-dessous :
Nous nous retrouvons à nouveau à l’invite bash du conteneur et lorsque nous faisons un cat
du fichier que nous avons précédemment créé, il est toujours là.
OutputExample1
Nous pouvons maintenant sortir du conteneur :
Cet affichage montre que les modifications apportées à l’intérieur du conteneur persistent après l’arrêt et le redémarrage. Ce n’est que lorsque le conteneur est supprimé que le contenu est effacé. Cet exemple illustre également que les modifications étaient limitées au conteneur individuel. Lorsque nous avons démarré un deuxième conteneur, il reflétait l’état d’origine de l’image.
Étape 3 : Supprimer les deux conteneurs
Nous avons créé deux conteneurs, et nous conclurons notre bref tutoriel en les supprimant. La commande docker rm
, qui fonctionne uniquement sur les conteneurs arrêtés, vous permet de spécifier le nom ou l’ID d’un ou plusieurs conteneurs, nous pouvons donc les supprimer tous les deux avec ce qui suit :
Output11cc47339ee1
kickass_borg
Les deux conteneurs, ainsi que toutes les modifications que nous avons apportées à l’intérieur, ont maintenant disparu.
Conclusion
Nous avons examiné en détail la commande docker run
pour voir comment elle crée automatiquement un nouveau conteneur à chaque exécution. Nous avons également vu comment localiser un conteneur arrêté, le démarrer et s’y connecter. Si vous souhaitez en savoir plus sur la gestion des conteneurs, vous pourriez être intéressé par le guide, Nommage des conteneurs Docker : 3 conseils pour les débutants.
Source:
https://www.digitalocean.com/community/tutorials/working-with-docker-containers