すべてのプロダクト
Search
ドキュメントセンター

Elastic Container Instance:コンテナーをコミットしてイメージを生成し、Container Registry のイメージリポジトリにイメージをプッシュする

最終更新日:Dec 28, 2024

エラスティックコンテナーインスタンスを起動した後、ビジネス要件に基づいてインスタンス内のコンテナーを変更する必要がある場合があります。変更されたコンテナー環境を将来使用するために保持する場合は、新しい環境をイメージにパッケージ化し、イメージを Container Registry のイメージリポジトリにプッシュできます。このトピックでは、CommitContainer および DescribeCommitContainerTask API オペレーションを使用して、コンテナーをコミットし、イメージを生成し、イメージを Container Registry のイメージリポジトリにプッシュする方法について説明します。

準備

  1. Container Registry インスタンスとイメージリポジトリを作成し、イメージリポジトリアドレスを取得します。

    Container Registry インスタンスとイメージリポジトリの作成方法の詳細については、次のドキュメントを参照してください。

    Container Registry インスタンスとイメージリポジトリが作成された後、[リポジトリ] ページからリポジトリアドレスを取得できます。この例では、VPC エンドポイントが取得されます。

    镜像仓库地址.png

  2. Elastic Container Instance の RAM ロールを作成し、ポリシーを RAM ロールにアタッチします。このポリシーにより、RAM ロールは Container Registry にアクセスできます。次に、RAM ロールの Alibaba Cloud Resource Name(ARN)を取得します。

    1. Elastic Container Instance の RAM ロールを作成します

      詳細については、信頼できる Alibaba Cloud サービスの RAM ロールの作成 を参照してください。次の構成に注意してください。

      • ロールの作成ウィザードの ロールタイプの選択 ステップで、[信頼できるエンティティの選択] セクションの Alibaba Cloud サービス を選択します。

      • ロールの構成 ステップで、[ロールタイプ] パラメーターを 標準サービスロール に設定し、[RAM ロール名] パラメーターを構成し、信頼できるサービスのドロップダウンリストから ECI を選択します。

    2. ポリシーを RAM ロールにアタッチします。

      詳細については、RAM ロールへの権限の付与 を参照してください。AliyunContainerRegistryFullAccess ポリシーを選択します。

    3. RAM ロールの ARN を取得します。

      ロールの詳細ページの [基本情報] セクションで ARN を取得できます。

      角色ARN.png

構成の説明

CommitContainer API オペレーションを使用すると、非同期タスクを作成できます。エラスティックコンテナーインスタンス内のコンテナーをイメージとして保存し、Alibaba Cloud Container Registry のイメージリポジトリにプッシュできます。次の表に、CommitContainer の主要なパラメーターを示します。詳細については、CommitContainer を参照してください。

パラメーター

タイプ

説明

ContainerGroupId

string

eci-bp1do4xz75fa5sd****

CommitContainer タスクを作成するエラスティックコンテナーインスタンスの ID。

ContainerName

string

container-1

イメージを作成するコンテナーの名前。

Image.Repository

string

registry-vpc.cn-beijing.aliyuncs.com/test/test-****

Container Registry のイメージリポジトリアドレス。

セキュリティ上の理由から、Container Registry のイメージリポジトリにのみイメージをプッシュできます。

Image.Tag

String

1.0.1

イメージタグ。

AcrRegistryInfo.InstanceId

string

cri-nwj395hgf6f3****

Container Registry Enterprise Edition インスタンスの ID。

Container Registry 個人版インスタンスを使用する場合は、このパラメーターを構成する必要はありません。Container Registry Enterprise Edition インスタンスを使用する場合は、このパラメーターを構成する必要があります。

AcrRegistryInfo.RegionId

string

cn-beijing

Container Registry Enterprise Edition インスタンスのリージョン ID。

Container Registry 個人版インスタンスを使用する場合は、このパラメーターを構成する必要はありません。Container Registry Enterprise Edition インスタンスを使用する場合は、このパラメーターを構成する必要があります。

Arn.RoleArn

string

acs:ram::1609982529******:role/commit-test

RAM ロールの ARN。ARN の構成と取得方法については、このトピックの「準備」セクションを参照してください。

Arn.RoleType

string

service

認証のタイプ。値 service は、RAM ロールが認証に使用されることを示します。

CommitContainer API オペレーションを呼び出すと、レスポンスに TaskId パラメーターが含まれます。DescribeCommitContainerTask API オペレーションを呼び出して、タスク ID に基づいて CommitContainer タスクのステータスをクエリできます。返された TaskStatus 値が Succeeded の場合、イメージが生成され、Container Registry のイメージリポジトリにプッシュされます。DescribeCommitContainerTask API オペレーションの詳細については、DescribeCommitContainerTask を参照してください。

サンプル構成

  1. エラスティックコンテナーインスタンス A(インスタンス A)を作成します。

  2. インスタンス A に接続し、コンテナー内で操作を実行します。

    この例では、ファイル (hello.txt) がコンテナーに書き込まれます。

    eci-commit

  3. CommitContainer API オペレーションを呼び出して、インスタンス A のコンテナー環境をイメージにパッケージ化し、Container Registry のイメージリポジトリにプッシュします。

    パラメーターの例:

    RegionId=cn-beijing
    ContainerGroupId=eci-2zeh3j8kdnqvnf5n****
    ContainerName-container-1
    Image.Repository=registry-vpc.cn-beijing.aliyuncs.com/***-test/***-registry
    Image.Tag=1.0.1
    Arn,RoleArn=acs:ram::1609982529******:role/commit-test
    Arn.RoleType=service

    Container Registry Enterprise Edition インスタンスのイメージリポジトリにイメージをプッシュする場合は、AcrRegistryInfo 関連パラメーターを使用して Enterprise Edition インスタンスのアクセス認証情報を構成する必要があります。例:

    AcrRegistryInfo.InstanceId=cri-nwj395hgf6f3****
    AcrRegistryInfo.RegionId=cn-beijing

    次の結果が返されます。

    {
      "TaskId": "t-2zej6nstkg744qc3****",
      "RequestId": "4ADE19FF-C487-5020-A6E4-03D5D9708834"
    }
  4. DescribeCommitContainerTask API オペレーションを呼び出して、タスク ID に基づいて CommitContainer タスクのステータスをクエリします。

    パラメーターの例:

    RegionId=cn-beijing
    TaskId=["t-2zej6nstkg744qc3****"]

    次の結果が返されます。TaskStatus 値が Succeeded の場合、CommitContainer タスクは正常に実行されます。CommitPhaseInfos セクションでは、PushCommittedImage フェーズのステータスは success です。これは、イメージが Container Registry インスタンスの指定されたイメージリポジトリにプッシュされたことを示します。

    {
      "TotalCount": 1,
      "CommitTasks": [
        {
          "TaskId": "t-2zej6nstkg744qc3****",
          "ContainerName": "container-1",
          "CommitPhaseInfos": [
            ......
            {
              "Status": "Success",
              "RecordTime": "2023-02-01T11:08:04.313047785+08:00",
              "Phase": "PushCommittedImage",
              "Message": "Push image registry-vpc.cn-beijing.aliyuncs.com/***-test/***-registry:1.0.1 successfully" // イメージ registry-vpc.cn-beijing.aliyuncs.com/***-test/***-registry:1.0.1 のプッシュに成功しました
            }
          ],
          "CreationTime": "2023-02-01T11:08:00Z",
          "TaskStatus": "Succeeded",
          "FinishedTime": "2023-02-01T11:08:10Z"
        }
      ],
      "NextToken": "",
      "RequestId": "42E65299-8224-5D4A-915E-5AEC04A523FC"
    }

    Container Registry コンソール にログインします。Container Registry インスタンスのイメージリポジトリに、Elastic Container Instance によってプッシュされた新しいイメージを表示できます。

    推送镜像.png

  5. Container Registry インスタンスのイメージリポジトリにプッシュされた新しいイメージに基づいて、エラスティックコンテナーインスタンス B(インスタンス B)を作成します。

    この例では、新しいイメージは registry-vpc.cn-beijing.aliyuncs.com/***-test/***-registry:1.0.1 です。

    eci-commit2

    説明

    Container Registry 個人版インスタンスのイメージリポジトリからイメージを選択する場合は、マイイメージ を選択します。Container Registry Enterprise Edition インスタンスのイメージリポジトリからイメージを選択する場合は、Container Registry Enterprise Edition イメージ を選択します。

  6. インスタンス B のコンテナー環境がインスタンス A のコンテナー環境と同じかどうかを確認します。

    この例では、hello.txt ファイルがインスタンス A のコンテナーに追加されます。インスタンス A のコンテナーに基づいてイメージが生成されます。インスタンス B はイメージに基づいて作成されます。その結果、hello.txt ファイルはデフォルトでインスタンス B のコンテナーに表示されます。

    eci-commit3