Construire et pousser votre première image
Explication
Maintenant que vous avez mis à jour l'application de liste de tâches, vous êtes prêt à créer une image de conteneur pour l'application et la partager sur Docker Hub. Pour ce faire, vous devrez faire ce qui suit :
- Se connecter avec votre compte Docker
- Créer un dépôt d'images sur Docker Hub
- Construire l'image de conteneur
- Pousser l'image vers Docker Hub
Avant de plonger dans le guide pratique, voici quelques concepts fondamentaux dont vous devriez être conscient.
Images de conteneur
Si vous êtes nouveau avec les images de conteneur, pensez-y comme un package standardisé qui contient tout ce qui est nécessaire pour exécuter une application, y compris ses fichiers, configuration et dépendances. Ces packages peuvent ensuite être distribués et partagés avec d'autres.
Docker Hub
Pour partager vos images Docker, vous avez besoin d'un endroit pour les stocker. C'est là qu'interviennent les registres. Bien qu'il y ait de nombreux registres, Docker Hub est le registre par défaut et de référence pour les images. Docker Hub fournit à la fois un endroit pour stocker vos propres images et pour trouver des images d'autres personnes à exécuter ou utiliser comme bases pour vos propres images.
Dans Développer avec des conteneurs, vous avez utilisé les images suivantes qui proviennent de Docker Hub, chacune étant des Images officielles Docker :
- node - fournit un environnement Node et est utilisé comme base de vos efforts de développement. Cette image est aussi utilisée comme base pour l'image d'application finale.
- mysql - fournit une base de données MySQL pour stocker les éléments de la liste de tâches
- phpmyadmin - fournit phpMyAdmin, une interface web pour la base de données MySQL
- traefik - fournit Traefik, un proxy inverse HTTP moderne et équilibreur de charge qui route les requêtes vers le conteneur approprié basé sur les règles de routage
Explorez le catalogue complet des Images officielles Docker, Éditeurs vérifiés Docker, et Logiciels open source sponsorisés Docker pour voir plus de ce qu'il y a à exécuter et construire.
Essayez-le
Dans ce guide pratique, vous apprendrez comment vous connecter à Docker Hub et pousser des images vers le dépôt Docker Hub.
Se connecter avec votre compte Docker
Pour pousser des images vers Docker Hub, vous devrez vous connecter avec un compte Docker.
-
Ouvrez le tableau de bord Docker.
-
Sélectionnez Se connecter dans le coin supérieur droit.
-
Si nécessaire, créez un compte puis complétez le flux de connexion.
Une fois terminé, vous devriez voir le bouton Se connecter se transformer en photo de profil.
Créer un dépôt d'images
Maintenant que vous avez un compte, vous pouvez créer un dépôt d'images. Tout comme un dépôt Git contient du code source, un dépôt d'images stocke des images de conteneur.
-
Allez sur Docker Hub.
-
Sélectionnez Créer un dépôt.
-
Sur la page Créer un dépôt, entrez les informations suivantes :
- Nom du dépôt -
getting-started-todo-app
- Description courte - n'hésitez pas à entrer une description si vous le souhaitez
- Visibilité - sélectionnez Public pour permettre aux autres de tirer votre application de liste de tâches personnalisée
- Nom du dépôt -
-
Sélectionnez Créer pour créer le dépôt.
Construire et pousser l'image
Maintenant que vous avez un dépôt, vous êtes prêt à construire et pousser votre image. Une note importante est que l'image que vous construisez étend l'image Node, ce qui signifie que vous n'avez pas besoin d'installer ou configurer Node, yarn, etc. Vous pouvez simplement vous concentrer sur ce qui rend votre application unique.
Qu'est-ce qu'une image/Dockerfile ?
Sans aller trop en profondeur encore, pensez à une image de conteneur comme un package unique qui contient tout ce qui est nécessaire pour exécuter un processus. Dans ce cas, elle contiendra un environnement Node, le code backend, et le code React compilé.
Toute machine qui exécute un conteneur utilisant l'image, sera alors capable d'exécuter l'application comme elle a été construite sans avoir besoin d'autre chose de pré-installé sur la machine.
Un
Dockerfile
est un script basé sur du texte qui fournit l'ensemble d'instructions sur comment construire l'image. Pour ce démarrage rapide, le dépôt contient déjà le Dockerfile.
-
Pour commencer, soit clonez ou téléchargez le projet comme fichier ZIP sur votre machine locale.
$ git clone https://github.com/docker/getting-started-todo-app
Et après que le projet soit cloné, naviguez dans le nouveau répertoire créé par le clone :
$ cd getting-started-todo-app
-
Construisez le projet en exécutant la commande suivante, en remplaçant
DOCKER_USERNAME
par votre nom d'utilisateur.$ docker build -t <DOCKER_USERNAME>/getting-started-todo-app .
Par exemple, si votre nom d'utilisateur Docker était
mobydock
, vous exécuteriez ce qui suit :$ docker build -t mobydock/getting-started-todo-app .
-
Pour vérifier que l'image existe localement, vous pouvez utiliser la commande
docker image ls
:$ docker image ls
Vous verrez une sortie similaire à la suivante :
REPOSITORY TAG IMAGE ID CREATED SIZE mobydock/getting-started-todo-app latest 1543656c9290 2 minutes ago 1.12GB ...
-
Pour pousser l'image, utilisez la commande
docker push
. Assurez-vous de remplacerDOCKER_USERNAME
par votre nom d'utilisateur :$ docker push <DOCKER_USERNAME>/getting-started-todo-app
Selon vos vitesses de téléchargement, cela peut prendre un moment pour pousser.
-
Ouvrez Visual Studio Code. Assurez-vous d'avoir l'extension Docker pour VS Code installée depuis Extension Marketplace.
-
Dans le menu Fichier, sélectionnez Ouvrir le dossier. Choisissez Cloner le dépôt Git et collez cette URL : https://github.com/docker/getting-started-todo-app
-
Faites un clic droit sur le
Dockerfile
et sélectionnez l'élément de menu Construire l'image.... -
Dans la boîte de dialogue qui apparaît, entrez un nom de
DOCKER_USERNAME/getting-started-todo-app
, en remplaçantDOCKER_USERNAME
par votre nom d'utilisateur Docker. -
Après avoir appuyé sur Entrée, vous verrez un terminal apparaître où la construction aura lieu. Une fois terminée, n'hésitez pas à fermer le terminal.
-
Ouvrez l'extension Docker pour VS Code en sélectionnant le logo Docker dans le menu de navigation gauche.
-
Trouvez l'image que vous avez créée. Elle aura un nom de
docker.io/DOCKER_USERNAME/getting-started-todo-app
. -
Développez l'image pour voir les tags (ou différentes versions) de l'image. Vous devriez voir un tag nommé
latest
, qui est le tag par défaut donné à une image. -
Faites un clic droit sur l'élément latest et sélectionnez l'option Pousser....
-
Appuyez sur Entrée pour confirmer puis regardez votre image être poussée vers Docker Hub. Selon vos vitesses de téléchargement, cela peut prendre un moment pour pousser l'image.
Une fois le téléchargement terminé, n'hésitez pas à fermer le terminal.
Récapitulatif
Avant de continuer, prenez un moment et réfléchissez à ce qui s'est passé ici. En quelques moments, vous avez pu construire une image de conteneur qui package votre application et la pousser vers Docker Hub.
À l'avenir, vous voudrez vous rappeler que :
-
Docker Hub est le registre de référence pour trouver du contenu de confiance. Docker fournit une collection de contenu de confiance, composée d'Images officielles Docker, d'Éditeurs vérifiés Docker, et de Logiciels open source sponsorisés Docker, à utiliser directement ou comme bases pour vos propres images.
-
Docker Hub fournit un marché pour distribuer vos propres applications. N'importe qui peut créer un compte et distribuer des images. Bien que vous distribuiez publiquement l'image que vous avez créée, les dépôts privés peuvent s'assurer que vos images ne sont accessibles qu'aux utilisateurs autorisés.
Utilisation d'autres registres
Bien que Docker Hub soit le registre par défaut, les registres sont standardisés et rendus interopérables grâce à l'Open Container Initiative. Cela permet aux entreprises et organisations d'exécuter leurs propres registres privés. Assez souvent, le contenu de confiance est mis en miroir (ou copié) depuis Docker Hub dans ces registres privés.
Étapes suivantes
Maintenant que vous avez construit une image, il est temps de discuter pourquoi vous en tant que développeur devriez en apprendre plus sur Docker et comment cela vous aidera dans vos tâches quotidiennes.