⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Partager l'application

Maintenant que vous avez construit une image, vous pouvez la partager. Pour partager des images Docker, vous devez utiliser un registre Docker. Le registre par défaut est Docker Hub et c'est de là que proviennent toutes les images que vous avez utilisées.

ID Docker

Un ID Docker vous permet d'accéder à Docker Hub, qui est la plus grande bibliothèque et communauté mondiale d'images de conteneurs. Créez un ID Docker gratuitement si vous n'en avez pas.

Créer un dépôt

Pour pousser une image, vous devez d'abord créer un dépôt sur Docker Hub.

  1. Inscrivez-vous ou Connectez-vous à Docker Hub.

  2. Sélectionnez le bouton Créer un dépôt.

  3. Pour le nom du dépôt, utilisez getting-started. Assurez-vous que la Visibilité est Publique.

  4. Sélectionnez Créer.

Dans l'image suivante, vous pouvez voir un exemple de commande Docker depuis Docker Hub. Cette commande poussera vers ce dépôt.

Commande Docker avec exemple de push

Pousser l'image

Essayons de pousser l'image vers Docker Hub.

  1. Dans la ligne de commande, exécutez la commande suivante :

    docker push docker/getting-started
    

    Vous verrez une erreur comme celle-ci :

    $ docker push docker/getting-started
    The push refers to repository [docker.io/docker/getting-started]
    An image does not exist locally with the tag: docker/getting-started
    

    Cet échec est attendu car l'image n'est pas encore étiquetée correctement. Docker cherche un nom d'image docker/getting started, mais votre image locale est encore nommée getting-started.

    Vous pouvez confirmer cela en exécutant :

    docker image ls
    
  2. Pour corriger cela, connectez-vous d'abord à Docker Hub en utilisant votre ID Docker : docker login YOUR-USER-NAME.

  3. Utilisez la commande docker tag pour donner à l'image getting-started un nouveau nom. Remplacez YOUR-USER-NAME par votre ID Docker.

    $ docker tag getting-started YOUR-USER-NAME/getting-started
    
  4. Maintenant exécutez à nouveau la commande docker push. Si vous copiez la valeur depuis Docker Hub, vous pouvez omettre la partie tagname, car vous n'avez pas ajouté de tag au nom de l'image. Si vous ne spécifiez pas de tag, Docker utilise un tag appelé latest.

    $ docker push YOUR-USER-NAME/getting-started
    

Exécuter l'image sur une nouvelle instance

Maintenant que votre image a été construite et poussée dans un registre, essayez d'exécuter votre application sur une toute nouvelle instance qui n'a jamais vu cette image de conteneur. Pour ce faire, vous utiliserez Play with Docker.

Note

Play with Docker utilise la plateforme amd64. Si vous utilisez un Mac basé sur ARM avec du silicium Apple, vous devrez reconstruire l'image pour être compatible avec Play with Docker et pousser la nouvelle image vers votre dépôt.

Pour construire une image pour la plateforme amd64, utilisez le flag --platform.

$ docker build --platform linux/amd64 -t YOUR-USER-NAME/getting-started .

Docker buildx supporte aussi la construction d'images multi-plateformes. Pour en savoir plus, voir Images multi-plateformes.

  1. Ouvrez votre navigateur sur Play with Docker.

  2. Sélectionnez Login puis sélectionnez docker dans la liste déroulante.

  3. Connectez-vous avec votre compte Docker Hub puis sélectionnez Start.

  4. Sélectionnez l'option ADD NEW INSTANCE dans la barre latérale gauche. Si vous ne la voyez pas, élargissez un peu votre navigateur. Après quelques secondes, une fenêtre de terminal s'ouvre dans votre navigateur.

    Play with Docker ajouter une nouvelle instance
  5. Dans le terminal, démarrez votre application fraîchement poussée.

    $ docker run -dp 0.0.0.0:3000:3000 YOUR-USER-NAME/getting-started
    

    Vous devriez voir l'image être téléchargée et finalement démarrer.

    Tip

    Vous avez peut-être remarqué que cette commande lie le mappage de port à une adresse IP différente. Les commandes docker run précédentes publiaient les ports vers 127.0.0.1:3000 sur l'hôte. Cette fois, vous utilisez 0.0.0.0.

    Se lier à 127.0.0.1 expose seulement les ports d'un conteneur à l'interface de bouclage. Se lier à 0.0.0.0, cependant, expose le port du conteneur sur toutes les interfaces de l'hôte, le rendant disponible au monde extérieur.

    Pour plus d'informations sur le fonctionnement du mappage de ports, voir Réseau.

  6. Sélectionnez le badge 3000 quand il apparaît.

    Si le badge 3000 n'apparaît pas, vous pouvez sélectionner Open Port et spécifier 3000.

Résumé

Dans cette section, vous avez appris comment partager vos images en les poussant vers un registre. Vous êtes ensuite allé sur une toute nouvelle instance et avez pu exécuter l'image fraîchement poussée. C'est assez courant dans les pipelines CI, où le pipeline créera l'image et la poussera vers un registre, puis l'environnement de production peut utiliser la dernière version de l'image.

Informations connexes :

Étapes suivantes

Dans la section suivante, vous apprendrez comment persister les données dans votre application conteneurisée.