Propagation d'images à l'aide de l'interface de ligne de commande Docker

Découvrez comment propager des images vers Container Registry à l'aide de l'interface de ligne de commande Docker.

L'interface de ligne de commande Docker vous permet de propager des images vers Oracle Cloud Infrastructure Registry (également appelé Container Registry).

Pour propager une image, vous utilisez d'abord la commande docker tag afin de créer une copie de l'image source locale en tant que nouvelle image (la nouvelle image est en fait simplement une référence à l'image source existante). En tant que nom de la nouvelle image, vous indiquez le chemin qualifié complet de l'emplacement cible dans Container Registry vers lequel propager l'image, y compris le nom d'un référentiel.

Par exemple, supposons que vous disposez d'une image locale nommée acme-web-app:latest (nom d'image comprenant le nom de référentiel de acme-web-app et la balise d'image de latest). Vous voulez propager cette image vers Container Registry dans un référentiel appelé project01/acme-web-app avec un identificateur de version de v2.0.test, dans la région Ashburn de la location acme-dev. Lorsque vous utilisez la commande docker tag, vous nommez la nouvelle image avec le chemin qualifié complet de la destination au format <registry-domain>/<tenancy-namespace>/<repo-name>:<version>. Dans ce cas, vous devez donc nommer la nouvelle image ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/acme-web-app:v2.0.test. Ensuite, lorsque vous utilisez la commande docker push, le nom de l'image garantit qu'elle est propagée vers la destination correcte.

Vos droits d'accès contrôlent les images que vous pouvez propager vers Container Registry (reportez-vous à Stratégies de contrôle de l'accès au référentiel). Vous pouvez propager des images vers des référentiels que vous avez créés (reportez-vous à Création d'un référentiel). Vous pouvez également propager des images vers des référentiels auxquels les groupes dont vous êtes membre ont accès grâce à des stratégies d'identité appropriées. Si vous êtes membre du groupe d'administrateurs, vous pouvez propager des images vers n'importe quel référentiel de la location.

Notez que les instructions de cette rubrique partent du principe que le référentiel vers lequel vous souhaitez transmettre les images existe déjà. Ce sera généralement le cas, mais pas toujours le cas (reportez-vous à Création d'un référentiel).

Remarque

Container Registry est un registre conforme à l'Open Container Initiative. Par conséquent, vous pouvez stocker tous les artefacts conformes aux spécifications d'Open Container Initiative, tels que des images Docker, des listes de manifestes (parfois appelées images à architecture multiple) et des graphiques Helm. Les instructions de cette rubrique supposent que vous stockez des images Docker et que vous utilisez la CLI Docker.

Pour propager des images vers Container Registry à l'aide de l'interface de ligne de commande Docker, procédez comme suit :

  1. Si vous disposez déjà d'un jeton d'authentification, passez à l'étape suivante. Sinon, procédez comme suit :

    1. Dans l'angle supérieur droit de la console, ouvrez le menu Profil Icône du menu Profil, puis sélectionnez Paramètres d'utilisateur (ou Mon profil ou le nom de votre compte) pour afficher les détails.

    2. Sur la page Jetons d'authentification, sélectionnez Générer un jeton.

    3. Entrez la description conviviale du jeton d'authentification. Evitez de saisir des informations confidentielles.

    4. Sélectionnez Générer un jeton. Le nouveau jeton d'authentification s'affiche.

    5. Copiez immédiatement le jeton d'authentification vers un emplacement sécurisé à partir duquel vous pourrez l'extraire ultérieurement, car il ne sera plus visible dans la console.

    6. Fermez la boîte de dialogue Générer un jeton.

  2. Dans une fenêtre de terminal sur l'ordinateur client exécutant Docker, connectez-vous à Container Registry en saisissant docker login <registry-domain>, où <registry-domain> inclut une clé de région ou un identificateur de région pour la région Container Registry que vous utilisez. Par exemple, docker login ocir.us-ashburn-1.oci.oraclecloud.com. Reportez-vous à Disponibilité par région.

  3. Lorsque vous êtes invité à saisir un nom utilisateur, saisissez-le au format <tenancy-namespace>/<username>, où <tenancy-namespace> correspond à la chaîne d'espace de noms Object Storage générée automatiquement de la location (comme indiqué sur la page Informations sur la location). Par exemple, ansh81vru1zp/jdoe@acme.com.

    Si votre location est fédérée avec Oracle Identity Cloud Service, utilisez le format <tenancy-namespace>/<domain-name>/<username>. Pour les utilisateurs fédérés, <domain-name>/<username> est affiché dans le menu Profil Icône du menu Profil de la console. Par exemple, si la chaîne d'espace de noms de votre location est ansh81vru1zp et que votre location est fédérée avec Oracle Identity Cloud Service, et que votre nom utilisateur est jdoe@acme.com, entrez ansh81vru1zp/oracleidentitycloudservice/jdoe@acme.com

  4. Lorsque vous êtes invité à saisir un mot de passe, saisissez le jeton d'authentification que vous avez copié précédemment.

  5. Sur l'ordinateur client, recherchez l'image à propager :

    1. Dans une fenêtre de terminal de l'ordinateur client, saisissez docker images pour répertorier les images disponibles.

      Par exemple :

          
      $ docker images
      REPOSITORY        TAG              IMAGE ID      CREATED       SIZE
      acme-web-app      latest           8e0506e14874  2 hours ago   162.6 MB
      acme-web-app      v1.0             7d9495d03763  2 hours ago   162.6 MB
      <none>            <none>           6ebd328f833d  5 hours ago   162.6 MB
      hello-world       latest           80b84820d442  5 weeks ago   890 B
      					
    2. Recherchez l'image locale à propager vers Container Registry sur l'ordinateur client.

      Dans la sortie de la commande docker images, recherchez l'image à propager. Vous devrez identifier cette image de manière unique par la suite, de l'une des façons suivantes :

      • En utilisant son ID.

      • En utilisant son nom d'image (son nom de référentiel et sa balise d'image séparés par deux-points).

      Par exemple, sur l'ordinateur client, vous pouvez avoir une image acme-web-app. Dans la sortie de la commande docker images, recherchez l'image acme-web-app à propager. Vous pouvez identifier cette image de manière unique de l'une des manières suivantes :

      • En utilisant son ID (par exemple, 8e0506e14874).

      • En utilisant son nom d'image (son nom de référentiel et sa balise d'image séparés par le signe deux-points, par exemple acme-web-app:latest).

    3. Utilisez la commande docker tag pour créer une copie de l'image d'origine en tant que nouvelle image (la nouvelle image est en fait simplement une référence à l'image d'origine existante). En tant que nom (ou balise) de la nouvelle image, vous indiquez le chemin qualifié complet de l'emplacement cible dans Container Registry vers lequel propager l'image. Pour ce faire, saisissez :

      docker tag <image-identifier> <target-tag>

      où :

      • <image-identifier> identifie l'image d'origine de manière unique, soit à l'aide de son ID (par exemple, 8e0506e14874), soit à l'aide de son nom (son nom de référentiel d'origine et sa balise d'image séparés par le signe deux-points, par exemple, acme-web-app:latest).

      • <target-tag> est le chemin qualifié complet vers l'emplacement cible dans Container Registry où vous voulez propager l'image, au format <registry-domain>/<tenancy-namespace>/<repo-name>:<version>, où :

        • <registry-domain> inclut la clé de région ou l'identificateur de région pour la région Container Registry que vous utilisez. Par exemple, ocir.us-ashburn-1.oci.oraclecloud.com. Reportez-vous à domaine de registre.

        • <tenancy-namespace> est la chaîne d'espace de noms Object Storage générée automatiquement de la location qui détient le référentiel vers lequel propager l'image (comme indiqué sur la page Informations sur la location). Par exemple, l'espace de noms de la location acme-dev peut être ansh81vru1zp. Pour certaines anciennes locations, la chaîne d'espace de noms peut être identique au nom de la location en minuscules (par exemple, acme-dev). De plus, l'utilisateur doit avoir accès à la location.

        • <repo-name> est le nom du référentiel cible vers lequel propager l'image (par exemple, project01/acme-web-app). Notez que vous indiquez généralement un référentiel qui existe déjà, mais qui n'a pas toujours besoin d'être le cas (reportez-vous à Création d'un référentiel).

        • <version> est un identificateur de version à fournir à l'image dans Container Registry (par exemple, v2.0.test).

      Par exemple, en combinant les exemples précédents, vous pouvez entrer :

      docker tag 8e0506e14874 ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/acme-web-app:v2.0.test
  6. Vérifiez que l'image Docker a été correctement balisée sur l'ordinateur client en saisissant docker images et en vous assurant que la liste des images inclut une image avec la balise que vous avez indiquée.

    Par exemple :

    
    $ docker images
    REPOSITORY                                                                TAG                   IMAGE ID      CREATED       SIZE
    ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/acme-web-app v2.0.test             8e0506e14874  1 minute ago  162.6 MB
    acme-web-app                                                              latest                8e0506e14874  2 hours ago   162.6 MB
    acme-web-app                                                              v1.0                  7d9495d03763  2 hours ago   162.6 MB
    <none>                                                                    <none>                6ebd328f833d  5 hours ago   162.6 MB
    hello-world                                                               latest                80b84820d442  5 weeks ago   890 B
    					
  7. Poussez l'image Docker de l'ordinateur client vers Container Registry en saisissant :

    docker push <target-tag>

    <target-tag> est au format <registry-domain>/<tenancy-namespace>/<repo-name>:<version> où :

    • <registry-domain> inclut la clé de région ou l'identificateur de région pour la région Container Registry que vous utilisez. Par exemple, ocir.us-ashburn-1.oci.oraclecloud.com. Reportez-vous à domaine de registre.

    • <tenancy-namespace> est la chaîne d'espace de noms Object Storage générée automatiquement de la location qui détient le référentiel vers lequel propager l'image (comme indiqué sur la page Informations sur la location). Par exemple, l'espace de noms de la location acme-dev peut être ansh81vru1zp. Pour certaines anciennes locations, la chaîne d'espace de noms peut être identique au nom de la location en minuscules (par exemple, acme-dev). De plus, l'utilisateur doit avoir accès à la location.

    • <repo-name> est le nom du référentiel cible vers lequel propager l'image (par exemple, project01/acme-web-app). Notez que vous indiquez généralement un référentiel qui existe déjà, mais qui n'a pas toujours besoin d'être le cas (reportez-vous à Création d'un référentiel).

    • <version> est l'identificateur de version à fournir à l'image dans Container Registry (par exemple, v2.0.test).

    Par exemple :

    docker push ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/acme-web-app:v2.0.test