Oracle Cloud Infrastructureドキュメント

Docker CLIを使用したイメージのプッシュ

Docker CLIを使用してイメージをOracle Cloud Infrastructure Registryにプッシュします。

イメージをプッシュするには、まずdocker tagコマンドを使用してローカル・ソース・イメージのコピーを新しいイメージとして作成します(新しいイメージは実際には既存のソース・イメージへの参照に過ぎません)。 新しいイメージの名前として、イメージをプッシュするOracle Cloud レジストリ内のターゲット・ロケーションへの完全修飾パスを指定します。オプションでリポジトリの名前も指定できます。

たとえば、acme-web-app:latestという名前のローカル・イメージがあるとします。 このイメージをacme-web-appという名前のOracle Cloud Infrastructure Registryにプッシュしたいとしましょう:version2.0.testをacme-devテナンシのアッシュバーン・リージョンのproject01というリポジトリにコピーします。 docker tagコマンドを使用する場合は、<region-code>.ocir.io/<tenancy-namespace>/<repo-name>/<image-name>:<tag>という形式で、新規イメージに宛先への完全修飾パスを付けます。 この場合、新しいイメージの名前を iad.ocir.io/ansh81vru1zp/project01/acme-web-app:version2.0.testとします。 その後、docker pushコマンドを使用すると、イメージ名が正しい宛先にプッシュされます。

あなたのアクセス許可は、Oracle Cloud Infrastructure Registryにプッシュできるイメージを制御します。 作成したリポジトリにイメージをプッシュし、所属するグループに適切なアイデンティティ・ポリシーによってアクセスが許可されているリポジトリをリポジトリにプッシュできます。 Administratorsグループに属している場合は、テナンシ内の任意のリポジトリにイメージをプッシュできます。

Docker CLIを使用してイメージをOracle Cloud Infrastructure Registryにプッシュするには:

  1. すでに認証トークンがある場合は、次のステップに進みます。 そうでない場合は、次のようになります。

    1. コンソールの右上隅で、「ユーザー」メニュー(ユーザー・メニュー・アイコン)を開き、「ユーザー設定」をクリックして詳細を表示します。
    2. 「認証トークン」ページで、「トークンの生成」をクリックします。
    3. 認証トークンのわかりやすい説明を入力します。 機密情報を入力しないでください。
    4. 「トークンの生成」をクリックします。 新しい認証トークンが表示されます。
    5. コンソールでauthトークンが再び表示されないため、authトークンをすぐに安全なロケーションにコピーします。
    6. 「トークンの生成」ダイアログを閉じます。
  2. Dockerを実行しているクライアント・マシンのターミナル・ウィンドウで、docker login <region-code>.ocir.ioを入力してOracle Cloud Infrastructure Registryにログインします。ここで、<region-code>は、使用しているOracle Cloud Infrastructure Registryリージョンのコードに対応します。 たとえば、docker login iad.ocir.ioです。 リージョン・コードのリストは、「リージョン名およびリージョン・コード別の可用性」を参照してください。

  3. メッセージが表示されたら、<tenancy-namespace>/<username>の形式でユーザー名を入力します。 たとえば、ansh81vru1zp/jdoe@acme.comです。 テナンシがOracle Identity Cloud Serviceでフェデレーテッド化されている場合は、<tenancy-namespace>/oracleidentitycloudservice/<username>という形式を使用します。
  4. プロンプトが表示されたら、以前にコピーした認証トークンを入力します。
  5. プッシュしたいクライアント・マシン上のイメージを探します:

    1. クライアント・マシンの端末ウィンドウで、docker imagesと入力して、使用可能なイメージを表示します。

      例えば:

          
      $ docker images
      REPOSITORY        TAG              IMAGE ID      CREATED       SIZE
      acme-web-app      latest           8e0506e14874  2 hours ago   162.6 MB
      acme-web-app      version1.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. Oracle Cloud Infrastructure Registryにプッシュしたいクライアント・マシン上のイメージを探します。

      docker imagesコマンドの出力で、プッシュしたい特定のイメージを探します。 このイメージは、後で次のいずれかの方法で一意に識別する必要があります:

      • そのIDを使って
      • コロンで区切られた名前とタグを使用して

      たとえば、クライアント・マシンにacme-web-appという名前のイメージがあるとします。 docker imagesコマンドの出力で、プッシュしたい特定のacme-web-appイメージを探します。 次のいずれかの方法で、特定のイメージを一意に識別できます:

      • そのid (たとえば、8e0506e14874)を使用して、
      • コロンで区切られた名前とタグを使用して(たとえばacme-web-app:latest)
    3. 次のように入力して、Oracle Cloud Infrastructure Registryにプッシュするタグをイメージに付けます:

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

      説明:

      • <image-identifier>は、イメージID (たとえば、8e0506e14874)、またはイメージ名とコロンで区切られたタグ(たとえば、acme-web-app:latest)のいずれかを使用して、イメージを一意に識別します。
      • <target-tag>の形式は<region-code>.ocir.io/<tenancy-namespace>/<repo-name>/<image-name>:<tag>です:

        • <region-code>は、使用しているOracle Cloud Infrastructure Registryリージョンのコードです。 たとえば、iadです。 リージョン・コードのリストは、「リージョン名およびリージョン・コード別の可用性」を参照してください。
        • ocir.ioOracle Cloud Infrastructure Registryの名前です。
        • <tenancy-namespace>は、イメージをプッシュするリポジトリを所有するテナンシの自動生成ネームスペース文字列です。 たとえば、acme-devテナンシのネームスペースはansh81vru1zpである可能性があります。 一部の古いテナンシの場合、ネームスペース文字列がすべて小文字のテナンシ名(acme-devなど)と同じである可能性があります。 ユーザーがテナンシへのアクセス権を持っている必要があることにも注意してください。
        • <repo-name> (指定されている場合)は、イメージをプッシュするリポジトリの名前です(たとえば、project01)。 リポジトリの指定はオプションです(「リポジトリについて」を参照)。
        • <image-name>は、Oracle Cloud Infrastructure Registryでイメージに付ける名前です(たとえば、acme-web-app)。
        • <tag>は、イメージをOracle Cloud Infrastructure Registryで指定するイメージ・タグです(たとえば、version2.0.test)。

      たとえば、前の例を組み合わせて、次のように入力します:

      docker tag 8e0506e14874 iad.ocir.io/ansh81vru1zp/project01/acme-web-app:version2.0.test
  6. docker imagesと入力し、指定したタグのイメージがイメージのリストに含まれていることを確認して、Dockerイメージがクライアント・マシンに正しくタグ付けされていることを確認します。

    例えば:

    $ docker images
    REPOSITORY                                      TAG                   IMAGE ID      CREATED       SIZE
    iad.ocir.io/ansh81vru1zp/project01/acme-web-app version2.0.test       8e0506e14874  1 minute ago  162.6 MB
    acme-web-app                                    latest                8e0506e14874  2 hours ago   162.6 MB
    acme-web-app                                    version1.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. 次のように入力して、Dockerイメージをクライアント・マシンからOracle Cloud Infrastructure Registryにプッシュします:

    docker push <target-tag>

    ここで、<target-tag><region-code>.ocir.io/<tenancy-namespace>/<repo-name>/<image-name>:<tag>の形式です:

    • <region-code>は、使用しているOracle Cloud Infrastructure Registryリージョンのコードです。 たとえば、iadです。 リージョン・コードのリストは、「リージョン名およびリージョン・コード別の可用性」を参照してください。
    • ocir.ioOracle Cloud Infrastructure Registryの名前です。
    • <tenancy-namespace>は、イメージをプッシュするリポジトリを所有するテナンシの自動生成ネームスペース文字列です。 たとえば、acme-devテナンシのネームスペースはansh81vru1zpである可能性があります。 一部の古いテナンシの場合、ネームスペース文字列がすべて小文字のテナンシ名(acme-devなど)と同じである可能性があります。 ユーザーがテナンシへのアクセス権を持っている必要があることにも注意してください。
    • <repo-name> (指定されている場合)は、イメージをプッシュするリポジトリの名前です(たとえば、project01)。 リポジトリの指定はオプションです(「リポジトリについて」を参照)。
    • <image-name>は、Oracle Cloud Infrastructure Registryでイメージに付ける名前です(たとえば、acme-web-app)。
    • <tag>は、イメージをOracle Cloud Infrastructure Registryで指定するイメージ・タグです(たとえば、version2.0.test)。

    例えば:

    docker push iad.ocir.io/ansh81vru1zp/project01/acme-web-app:version2.0.test