GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Docker Part 4 :créer et publier des images Docker personnalisées

Dans la première et la deuxième partie, nous avons couvert les principes fondamentaux de l'exécution d'un conteneur en préparant notre système de gestion des conteneurs Docker et ce que signifie exactement l'utilisation d'un conteneur Docker par rapport à d'autres technologies de virtualisation d'un point de vue technique. Ensuite, dans la troisième partie, nous nous sommes penchés sur les images Docker, avons appris les bases et créé notre premier conteneur Bloc-notes en utilisant WordPress ou DokuWiki.

Dans cette quatrième partie, nous allons voir comment les images docker sont construites et nous allons créer notre propre image personnalisée prête à être téléchargée et partagée avec nos amis, collègues et communautés.

Pour ce tutoriel, nous utiliserons l'image Whale Docker. La baleine est la mascotte officielle de Docker et l'image du docker Whale ressemble au programme cowsay qui génère des images ASCII d'une vache dans le terminal avec un message. Il peut également générer des images à partir d'images préfabriquées d'autres animaux, comme Tux le pingouin, la mascotte de Linux.

Introduction aux fichiers Docker

Dans la partie précédente, nous nous sommes présentés au Docker Hub et avons appris qu'il s'agit d'une ressource centralisée basée sur le cloud pour la découverte d'images de conteneurs, la création d'images et la distribution de ces images. Nous avons également appris qu'une image docker est une image multicouche au-dessus d'une image de base. Cela dit, l'utilisation d'une image de base élimine les tracas de créer à partir de zéro un système d'exploitation adapté à l'image docker et nous donne la possibilité de personnaliser les couches supérieures où résidera notre logiciel.

Pour créer une image personnalisée à l'aide d'une image de base, nous devons fournir au moteur Docker des instructions sur la façon d'installer et de configurer les packages et les fichiers, ainsi que certains paramètres qui vont avec. Ces instructions sont écrites dans un fichier texte appelé « dockerfile ». Les Dockerfiles sont comme des recettes que vous remettez à un chef et il vous prépare un bon repas. Ces fichiers docker sont écrits à l'aide d'un ensemble simple et descriptif d'étapes appelées "instructions". Chaque instruction crée un nouveau calque dans notre image. Les instructions incluent des actions telles que l'exécution d'une commande, l'ajout d'un fichier ou d'un répertoire, le processus à exécuter lors du lancement d'un conteneur à partir de l'image, etc. Ce processus est similaire à la définition d'une série de commandes dans un script shell. Une fois que vous demandez la construction d'une image, le Docker lit le fichier docker, exécute les instructions et renvoie une image finale.

Construire une image Docker

Il existe deux façons de créer votre image Docker personnalisée. Vous pouvez soit le créer sur votre ordinateur, soit utiliser le Docker Hub dont nous avons parlé précédemment. Dans cette partie, nous allons apprendre à construire notre image Docker localement puis à la publier sur le Docker Hub Registry.

Construire localement à l'aide d'un Dockerfile

Nous allons créer une image Docker personnalisée en utilisant l'image "Whale say", qui est une petite image Docker (basée sur une image Ubuntu) qui, lorsque vous l'exécutez, indique quelque chose que vous avez programmé pour vous répondre.

Tout d'abord, lancez un terminal et créez un nouveau dossier en tapant :

mkdir mywhale

Ce répertoire sert de "contexte" pour votre construction. Le contexte signifie simplement qu'il contient toutes les choses dont vous avez besoin pour construire avec succès votre image.

Entrez dans votre nouveau dossier avec :

cd mywhale

et créez un Dockerfile dans le dossier en tapant :

touch Dockerfile

Vous devriez maintenant voir le Dockerfile vide que nous avons créé si vous donnez la commande 'll' :

ll
$ ll
total 8.0K
-rw-rw-r-- 1 user user 0 23:26 Dockerfile

Ouvrez-le avec votre éditeur de texte préféré et ajoutez :

FROM docker/whalesay:latest

Cette première ligne d'instructions, avec le mot-clé FROM, indique à Docker sur quelle image votre image est basée. Vous basez votre nouveau travail sur l'image de baleine existante.

La prochaine instruction que nous ajouterons donnera la capacité à notre baleine de dire une fortune. Pour accomplir cette tâche, nous utiliserons le package fortune qui est disponible dans les référentiels Ubuntu (rappelez-vous que l'image baleine est basée sur une image Ubuntu). Le programme Fortunes a une commande qui imprime des dictons sages que notre baleine doit dire.

Donc, la première étape consiste à l'installer. Pour ce faire, nous ajoutons l'instruction d'installation habituelle d'apt :

RUN apt -y update && apt -y install fortunes

Une fois que l'image a le logiciel dont elle a besoin, vous demandez au logiciel de s'exécuter lorsque l'image est chargée. Pour ce faire, nous ajoutons l'instruction suivante :

CMD /usr/games/fortune -a | cowsay

La ligne ci-dessus indique au programme Fortune d'envoyer une citation choisie au hasard au programme Cowsay

Et nous avons terminé ! Maintenant, enregistrez le fichier et quittez.
Vous pouvez vérifier ce que vous avez fait en exécutant "cat Dockerfile" afin que votre Dockerfile ressemble à ceci :

cat Dockerfile
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

Maintenant que tout semble bon (espérons-le), il est temps de construire notre image Docker (n'oubliez pas le point . à la fin de la commande) :

docker build -t my-docker-whale .

La commande ci-dessus prend le Dockerfile dans le dossier actuel et crée une image appelée "my-docker-whale" sur votre machine locale.

Vous pouvez vérifier que votre image Docker est bien stockée sur votre ordinateur avec :

docker images

Ensuite, vous pouvez exécuter votre image Docker en tapant ce qui suit :

docker run my-docker-whale

Une fois qu'il s'exécute, vous obtiendrez quelque chose comme l'image suivante

Publier votre image Docker personnalisée sur Docker Hub

Votre prochaine option consiste à publier l'image Docker créée sur le référentiel Docker Hub. Pour ce faire, vous devrez créer un compte sur la page Web d'inscription Docker Hub où vous fournirez un nom, un mot de passe et une adresse e-mail pour votre compte. Je dois également souligner que le service Docker Hub est gratuit pour les images Docker publiques. Une fois que vous avez créé votre compte, vous pouvez pousser l'image que vous avez précédemment créée, pour la rendre disponible pour que d'autres puissent l'utiliser.

Pour cela, vous aurez besoin de l'ID et du TAG de votre image "my-docker-whale".

Exécutez à nouveau la commande "docker images" et notez l'ID et le TAG de votre image Docker, par exemple. a69f3f5e1a31.

Maintenant, avec la commande suivante, nous allons préparer notre image Docker pour son voyage vers le monde extérieur (la partie accountname de la commande est votre nom de compte sur la page de profil Docker Hube) :

docker tag a69f3f5e1a31 accountname/my-docker-whale:latest

Exécutez la commande "docker images" et vérifiez votre image nouvellement taguée.

Ensuite, utilisez la commande "docker login" pour vous connecter au Docker Hub à partir de la ligne de commande.

Le format de la commande de connexion est :

docker login --username=yourhubusername [email protected]

Lorsque vous y êtes invité, entrez votre mot de passe et appuyez sur Entrée.

Vous pouvez maintenant transférer votre image vers le référentiel nouvellement créé :

docker push accountname/my-docker-whale

La commande ci-dessus peut prendre un certain temps en fonction de la bande passante de téléchargement de votre connexion, car elle télécharge quelque chose comme 180ΜΒ de données (dans notre exemple). Une fois terminé, vous pouvez accéder à votre profil sur Docker Hub et consulter votre nouvelle image.

Téléchargement de votre image personnalisée

Si vous souhaitez extraire votre image de votre référentiel Docker Hub, vous devrez d'abord supprimer l'image d'origine de votre machine locale, car Docker refuserait de l'extraire du hub car les images locales et distantes sont identiques.

Comme vous vous en souvenez de la partie précédente, pour supprimer une image docker, vous devez exécuter la commande "docker rmi". Vous pouvez utiliser un ID ou le nom pour supprimer une image :

docker rmi -f a69f3f5e1a31

Maintenant que l'image est supprimée, vous pouvez extraire et charger l'image depuis votre référentiel à l'aide de la commande "docker run" en incluant votre nom de compte depuis Docker Hub.

docker run accountname/my-docker-whale

Étant donné que nous avons précédemment supprimé l'image et qu'elle n'était plus disponible sur notre système local, Docker la téléchargera et la stockera à l'emplacement désigné.

Résumé

Dans cette partie, nous avons appris à créer un fichier Docker, à écrire quelques instructions de base, ainsi que la construction et l'image en l'utilisant comme recette. Nous avons également couvert les bases de la transmission de notre nouvelle image personnalisée au registre Docker Hub et de son extraction sur notre machine locale. Dans la prochaine partie de cette série de tutoriels Docker, je montrerai comment nous pouvons automatiser la procédure de création d'image afin que nous puissions créer instantanément des images personnalisées chaque fois que nous en avons besoin ! Restez à l'écoute.


Docker
  1. Comment déplacer des images Docker entre les hôtes

  2. Comment empaqueter et transférer des images Docker d'un serveur à un autre

  3. Comment modifier les images Docker

  4. Comment créer et configurer automatiquement des images Docker personnalisées avec Dockerfile - Partie 3

  5. Comment créer une image Docker à partir d'un conteneur et d'un Dockerfile

Gardez vos images Docker gérables avec Docker Image Prune

Comment utiliser Docker Commit pour modifier les images de conteneur

Guide complet pour supprimer les images Docker

Comment créer une image Docker personnalisée avec Dockerfile

Partage d'images Docker sur Docker Hub

Comment répertorier / rechercher / extraire des images docker sous Linux