Images mit der Docker-CLI per Push übergeben

Erfahren Sie, wie Sie Images mit der Docker-CLI an Container Registry übergeben.

Mit der Docker-CLI können Sie Images in Oracle Cloud Infrastructure Registry (auch als Container Registry bezeichnet) pushen.

Verwenden Sie zum Übergeben eines Images per Push zuerst den Befehl docker tag, um eine Kopie des lokalen Quellimages als neues Image zu erstellen (das neue Image ist eigentlich nur ein Verweis auf das vorhandene Quellimage). Geben Sie als Namen für das neue Image den vollqualifizierten Pfad zum Zielspeicherort in der Container Registry an, in den Sie das Image pushen möchten, einschließlich des Namens eines Repositorys.

Beispiel: Angenommen, Sie haben ein lokales Image mit dem Namen acme-web-app:latest (der Imagename, der den Repository-Namen acme-web-app und das Imagetag latest enthält). Angenommen, Sie möchten dieses Image per Push in Container Registry in ein Repository mit dem Namen project01/acme-web-app mit der Versions-ID v2.0.test in der Ashburn-Region des acme-dev-Mandanten übertragen. Bei Verwendung des Befehls docker tag würden Sie das neue Image mit dem vollqualifizierten Pfad zu seinem Ziel im Format <registry-domain>/<tenancy-namespace>/<repo-name>:<version> benennen. In diesem Fall würden Sie das neue Image ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/acme-web-app:v2.0.test nennen. Wenn Sie danach den Befehl docker push verwenden, stellt der Name des Images sicher, dass es in das richtige Ziel übergeben wird.

Ihre Berechtigungen steuern die Images, die Sie an Container Registry übertragen können (siehe Policys zur Kontrolle des Repository-Zugriffs). Sie können Images in von Ihnen erstellte Repositorys übertragen (siehe Repository erstellen). Sie können Images auch per Push an Repositorys senden, denen die Gruppen, zu denen Sie gehören, Zugriff durch entsprechende Identitäts-Policys erteilt wurde. Wenn Sie zur Administratorengruppe gehören, können Sie Images in ein beliebiges Repository im Mandanten übergeben.

Beachten Sie, dass bei den Anweisungen in diesem Thema davon ausgegangen wird, dass das Repository, in das Sie Images übertragen möchten, bereits vorhanden ist. Dies ist normalerweise der Fall, muss aber nicht immer der Fall sein (siehe Repository erstellen).

Hinweis

Container Registry ist eine Registry, die mit der Open Container Initiative konform ist. Daher können Sie Artefakte speichern, die den Spezifikationen der Open Container Initiative entsprechen, wie Docker-Images, Manifestlisten (manchmal auch als Images mit mehreren Architekturen bezeichnet) und Helm-Diagramme. Bei den Anweisungen in diesem Thema wird davon ausgegangen, dass Sie Docker-Images speichern und die Docker-CLI verwenden.

So übergeben Sie Images mit der Docker-CLI in Container Registry:

  1. Wenn Sie bereits über ein Authentifizierungstoken verfügen, fahren Sie mit dem nächsten Schritt fort. Andernfalls:

    1. Um die Details anzuzeigen, öffnen Sie in der oberen rechten Ecke der Konsole das Menü Profil Symbol für Profilmenü, und wählen Sie Benutzereinstellungen (oder Mein Profil oder Ihren Accountnamen) aus.

    2. Wählen Sie auf der Seite Authentifizierungstoken die Option Token generieren aus.

    3. Geben Sie eine benutzerfreundliche Beschreibung für das Token ein. Geben Sie keine vertraulichen Informationen ein.

    4. Wählen Sie Token generieren aus. Das neue Authentifizierungstoken wird angezeigt.

    5. Kopieren Sie das Auth-Token sofort in einen sicheren Speicherort, aus dem Sie es später abrufen können, da Sie das Auth-Token nicht erneut in der Konsole anzeigen können.

    6. Schließen Sie das Dialogfeld Token generieren.

  2. Melden Sie sich in einem Terminalfenster auf dem Clientrechner, auf dem Docker ausgeführt wird, bei Container Registry an, indem Sie docker login <registry-domain> eingeben. Dabei enthält <registry-domain> einen Regionsschlüssel oder eine Regions-ID für die verwendete Container Registry-Region. Beispiel: docker login ocir.us-ashburn-1.oci.oraclecloud.com. Siehe Verfügbarkeit nach Region.

  3. Wenn Sie zur Eingabe eines Benutzernamens aufgefordert werden, geben Sie Ihren Benutzernamen im Format <tenancy-namespace>/<username> ein. Dabei steht <tenancy-namespace> für die automatisch generierte Object Storage-Namespace-Zeichenfolge Ihres Mandanten (wie auf der Seite Mandanteninformationen angezeigt). Beispiel: ansh81vru1zp/jdoe@acme.com.

    Wenn Ihr Mandant mit Oracle Identity Cloud Service föderiert ist, verwenden Sie das Format <tenancy-namespace>/<domain-name>/<username>. Für föderierte Benutzer wird die <domain-name>/<username> im Menü Profil Symbol für Profilmenü in der Konsole angezeigt. Beispiel: Wenn die Namespace-Zeichenfolge Ihres Mandanten ansh81vru1zp lautet und Ihr Mandant mit Oracle Identity Cloud Service föderiert ist und Ihr Benutzername jdoe@acme.com lautet, geben Sie ansh81vru1zp/oracleidentitycloudservice/jdoe@acme.com ein.

  4. Wenn Sie zur Eingabe eines Kennworts aufgefordert werden, geben Sie das zuvor kopierte Authentifizierungstoken ein.

  5. Suchen Sie auf dem Clientrechner das Image, das Sie übergeben möchten:

    1. Geben Sie in einem Terminalfenster auf Ihrem Clientrechner docker images ein, um eine Liste der verfügbaren Images anzuzeigen.

      Beispiel:

          
      $ 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. Suchen Sie auf dem Client-Rechner das lokale Image, das Sie in Container Registry pushen möchten.

      Suchen Sie in der Ausgabe des Befehls docker images nach dem spezifischen Image, das Sie per Push übergeben möchten. Sie müssen dieses Image später auf eine der folgenden Arten eindeutig identifizieren:

      • Mit seiner ID.

      • Der Imagename wird verwendet (der Repository-Name und das Imagetag werden durch einen Doppelpunkt getrennt).

      Beispiel: Auf dem Clientrechner ist ein acme-web-app-Image vorhanden. Suchen Sie in der Ausgabe des Befehls docker images nach dem spezifischen acme-web-app-Image, das Sie per Push übergeben möchten. Sie können dieses bestimmte Image auf eine der folgenden Arten eindeutig identifizieren:

      • Mit seiner ID (Beispiel: 8e0506e14874).

      • Der Imagename wird verwendet (der Repository-Name und das Imagetag werden durch einen Doppelpunkt getrennt, z.B. acme-web-app:latest).

    3. Verwenden Sie den Befehl docker tag, um eine Kopie des ursprünglichen Bildes als neues Bild zu erstellen (das neue Bild ist eigentlich nur ein Verweis auf das vorhandene Originalbild). Geben Sie als Namen (oder Tag) für das neue Image den vollqualifizierten Pfad zum Zielspeicherort in der Container Registry an, in den Sie das Image pushen möchten. Geben Sie dazu Folgendes ein:

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

      Dabei gilt:

      • <image-identifier> identifiziert das ursprüngliche Image eindeutig, entweder mit der Image-ID (Beispiel: 8e0506e14874) oder mit dem Namen des Images (Ursprünglicher Repository-Name und Imagetag, getrennt durch Doppelpunkt, Beispiel: acme-web-app:latest).

      • <target-tag> ist der vollqualifizierte Pfad zum Zielspeicherort in Container Registry, in dem Sie das Image per Push übertragen möchten, im Format <registry-domain>/<tenancy-namespace>/<repo-name>:<version>. Dabei gilt:

        • <registry-domain> enthält den Regionsschlüssel oder die Regions-ID für die von Ihnen verwendete Container-Registry-Region. Beispiel: ocir.us-ashburn-1.oci.oraclecloud.com. Siehe Registry-Domain.

        • <tenancy-namespace> ist die automatisch generierte Zeichenfolge für den Objektspeicher-Namespace des Mandanten, der Eigentümer des Repositorys ist, in das Sie das Image übergeben möchten (wie auf der Seite Mandanteninformationen angezeigt). Beispiel: Der Namespace des acme-dev-Mandanten kann ansh81vru1zp lauten. Bei einigen älteren Mandanten kann die Namespace-Zeichenfolge mit dem Mandantennamen in Kleinbuchstaben identisch sein (Beispiel: acme-dev). Beachten Sie zudem, dass Ihr Benutzer Zugriff auf den Mandanten haben muss.

        • <repo-name> ist der Name des Ziel-Repositorys, in das Sie das Image übergeben möchten (z.B. project01/acme-web-app). Beachten Sie, dass Sie in der Regel ein Repository angeben, das bereits vorhanden ist, aber nicht immer der Fall sein muss (siehe Repository erstellen).

        • <version> ist eine Versions-ID, die Sie dem Image in Container Registry geben möchten (Beispiel: v2.0.test).

      Beispiel: Wenn Sie die obigen Beispiele kombinieren, könnten Sie Folgendes eingeben:

      docker tag 8e0506e14874 ocir.us-ashburn-1.oci.oraclecloud.com/ansh81vru1zp/project01/acme-web-app:v2.0.test
  6. Vergewissern Sie sich, dass das Docker-Image ordnungsgemäß auf dem Clientrechner getaggt wurde, indem Sie docker images eingeben und prüfen, ob die Liste der Images ein Image mit dem von Ihnen angegebenen Tag enthält.

    Beispiel:

    
    $ 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. Übergeben Sie das Docker-Image vom Clientrechner per Push in Container Registry, indem Sie Folgendes eingeben:

    docker push <target-tag>

    wobei <target-tag> das Format <registry-domain>/<tenancy-namespace>/<repo-name>:<version> hat. Dabei gilt:

    • <registry-domain> enthält den Regionsschlüssel oder die Regions-ID für die von Ihnen verwendete Container-Registry-Region. Beispiel: ocir.us-ashburn-1.oci.oraclecloud.com. Siehe Registry-Domain.

    • <tenancy-namespace> ist die automatisch generierte Zeichenfolge für den Objektspeicher-Namespace des Mandanten, der Eigentümer des Repositorys ist, in das Sie das Image übergeben möchten (wie auf der Seite Mandanteninformationen angezeigt). Beispiel: Der Namespace des acme-dev-Mandanten kann ansh81vru1zp lauten. Bei einigen älteren Mandanten kann die Namespace-Zeichenfolge mit dem Mandantennamen in Kleinbuchstaben identisch sein (Beispiel: acme-dev). Beachten Sie zudem, dass Ihr Benutzer Zugriff auf den Mandanten haben muss.

    • <repo-name> ist der Name des Ziel-Repositorys, in das Sie das Image übergeben möchten (z.B. project01/acme-web-app). Beachten Sie, dass Sie in der Regel ein Repository angeben, das bereits vorhanden ist, aber nicht immer der Fall sein muss (siehe Repository erstellen).

    • <version> ist die Versions-ID, die Sie dem Image in Container Registry geben möchten (Beispiel: v2.0.test).

    Beispiel:

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