プライベート・レジストリー内のイメージからのジョブの作成

プライベート Docker Hub などのプライベート・レジストリーにあるイメージを使用するジョブを作成します。 ジョブはコンソールから、または CLI を使用して作成できます。

開始前に

  • プライベート・レジストリーからイメージをプルするには、まずプライベート・レジストリーを作成する必要があります。 たとえば、 Docker Hubのプライベートレジストリを作成するには、「 Docker Hub」のドキュメントを参照してください。
  • プライベートレジストリを作成したら、 そのレジストリにイメージをプッシュしてください。
  • また、アクセス・トークンもセットアップできます。 アクセス・トークンを使用すると、パスワードを変更することなく、より簡単に Docker Hub アカウントへのアクセス権限を付与したり、取り消したりすることができます。 アクセストークンと Docker Hubの詳細については、「 アクセストークンの作成と管理 」を参照してください。

コンソールを使用してプライベート・レジストリー内のイメージを参照するジョブを作成する

Code Engine コンソールによって、プライベート・レジストリー内のイメージを使用するジョブ構成を作成します。

プライベート・レジストリー内のイメージを参照する Code Engine ジョブを操作するには、まずレジストリーへのアクセス権限を追加して、ジョブの実行時に Code Engine がイメージをプルできるようにする必要があります。

  1. Code Engine コンソールを開きます。
  2. 「 作成を開始 」を選択します。
  3. 選択可能なプロジェクトのリストからプロジェクトを選択します。 新規作成することもできます。 ジョブを作成するには、選択したプロジェクトがなければならないことに注意してください。
  4. **「ジョブ」**を選択します。
  5. ジョブの名前を入力します (例: myjob)。
  6. 「 既存のコンテナイメージを使用する 」を選択し、「 イメージの設定 」をクリックします。
  7. docker.io「レジストリー・サーバー」**に ** と入力します。
  8. 「レジストリシークレット」 については、「 レジストリシークレットを作成 」を選択してください。
  9. 「レジストリシークレットの作成」ページで、レジストリのソースを選択します。 例えば、Docker ハブなどです。
  10. 「レジストリシークレットの作成」ページで、ユーザー名を入力します。 Docker Hub の場合は、ご使用の Docker ID です。
  11. 「レジストリシークレットの作成」ページで、アクセストークンを入力します。 Docker Hub の場合は、ご使用の Docker Hub パスワードかアクセス・トークンを使用できます。 アクセストークンと Docker Hubの詳細については、「 アクセストークンの作成と管理 」を参照してください。
  12. [ 作成 ] をクリックして、 Code Engine のレジストリシークレットを追加します。
  13. 「イメージの設定」ページには、追加されたレジストリシークレットが一覧表示されます。 イメージに対応するレジストリ・シークレットを選択してください。
  14. Code Engine ジョブが参照するための、Docker Hub 内の名前空間とイメージの名前を選択します。 例えば、mynamespace を選択し、その名前空間に含まれるイメージ testjob を選択します。
  15. **「タグ」**の値を選択します (例: latest)。
  16. 「完了 (Done)」 をクリックします。 ジョブから参照するレジストリー内のイメージが選択されました。
  17. 環境変数やランタイム設定のデフォルト値を変更します。 これらのオプションについて詳しくは、ジョブを作成および実行する際のオプションを参照してください。
  18. 「ジョブの作成 (Create job)」ページで、**「作成」**をクリックします。
  19. ジョブを作成し終えたら、その特定のジョブに関するジョブのページが開きます。 ジョブ・ページで、ジョブの実行依頼をクリックして、現在の構成に基づいてジョブを実行依頼します。

レジストリー・アクセス権限を追加するには、ジョブ構成を作成する前に、コンテナー・レジストリーへのアクセスを参照してください。

CLI によるプライベート・レジストリーからのイメージを使用するジョブの作成

CLI でプライベート・レジストリーからのイメージを使用するジョブ構成を作成するには、job create コマンドを使用します。 このコマンドには名前とイメージが必須です。また、オプションの他の引数を指定することもできます。 オプションの完全なリストについては、ibmcloud ce job create コマンドを参照してください。

開始前に

  1. プライベート・レジストリーからイメージをプルするには、まずプライベート・レジストリーを作成する必要があります。 たとえば、 Docker Hubのプライベートレジストリを作成するには、「 Docker Hub」のドキュメントを参照してください。 プライベートレジストリを作成したら、 そのレジストリにイメージをプッシュしてください。 また、アクセス・トークンもセットアップできます。 アクセス・トークンを使用すると、パスワードを変更することなく、より簡単に Docker Hub アカウントへのアクセス権限を付与したり、取り消したりすることができます。 アクセストークンと Docker Hubの詳細については、「 アクセストークンの作成と管理 」を参照してください。

  2. イメージをプルするためのプライベート・レジストリーへのアクセス権限を追加します。 CLI を使用してプライベート・レジストリーへのアクセス権限を追加するには、 ibmcloud ce secret create --format registry コマンドを使用してレジストリー・シークレットを作成します。 たとえば、次のコマンドを実行すると、 https://index.docker.io/v1/ にある「 privatedocker 」という名前の Docker Hubレジストリへのアクセス権が作成され、ユーザーのユーザー名とパスワードが使用されます。

    ibmcloud ce secret create --format registry --name privatedocker --server https://index.docker.io/v1/ --username <Docker_User_Name> --password <Password>
    

    出力例

    Creating registry secret 'privatedocker'...
    OK
    
  3. ジョブ構成を作成して、プライベート Docker Hub レジストリー内のイメージを参照します。 例えば、mytestjob アクセス情報を使用して docker.io/privaterepo/testjob を参照する privatedocker ジョブ構成を作成します。

    ibmcloud ce job create --name mytestjob --image docker.io/privaterepo/testjob --registry-secret privatedocker
    

このジョブで使用するイメージの名前の形式は REGISTRY/NAMESPACE/REPOSITORY:TAG で、REGISTRY と TAG はオプションです。 REGISTRY を指定しない場合、そのデフォルトは docker.io です。 TAG を指定しない場合、そのデフォルトは latest です。

次のステップ

  • ジョブを作成した後、そのジョブを実行するためにジョブをサブミットします。 ジョブの実行を参照してください。 ジョブは複数回実行できます。

  • ジョブの実行後に、ジョブおよびジョブ実行の詳細を表示するには、アクセス・ジョブの詳細を参照してください。

  • ジョブが作成されたので、ジョブをイベント・ドリブンにすることを検討してください。 イベント・サブスクリプションを使用すると、定期的なスケジュールによってジョブをトリガーしたり、ファイルのアップロードなどのイベントに反応するようにジョブを設定したりすることができます。

  • ジョブの作成方法や以前の更新方法に関係なく、以下の任意の方法でジョブの更新および参照されるコードの更新を行うことができます。

    • Open Container Initiative(OCI)規格に準拠したコンテナイメージをお持ちの場合は、ジョブの作成(または更新)時に、コンテナレジストリの場所を指すイメージへの参照のみを指定すれば十分です。 パブリックレジストリ または プライベートレジストリ 内のイメージを使用してジョブを作成(または更新)し、ジョブの実行中にその参照されたイメージにアクセスすることができます。

      job create コマンドを使用してジョブを作成し、 --build-source オプションを指定してローカル・ソースまたはリポジトリー・ソースからコンテナー・イメージをビルドし、別のコンテナー・イメージを指すようにジョブを変更する場合は、まず、ジョブからビルドの関連付けを削除する必要があります。 例えば、 ibmcloud ce job update -n JOB_NAME --build-clear を実行します。 ジョブからビルドの関連付けを削除した後、別のイメージを参照するようにジョブを更新できます。

    • Git リポジトリーにあるソース・コードから開始する場合は、ソースからイメージをビルドし、単一操作を使用してジョブを作成 (または更新) する処理を Code Engine に任せることができます。 このシナリオでは、Code Engine はイメージを IBM Cloud® Container Registry にアップロードします。 詳しくは、リポジトリー・ソース・コードからのジョブの作成を参照してください。 イメージのビルドをさらに制御したい場合は、ジョブを作成 (または更新) してジョブを実行する前に、Code Engine を使用してイメージのビルドを選択することができます。

    • ローカル・ワークステーションにあるソース・コードから開始する場合は、単一 CLI コマンドを使用して、ソースからのイメージのビルドとジョブの作成を Code Engine に処理させることができます。 このシナリオでは、Code Engine はイメージを IBM Cloud® Container Registry にアップロードします。 詳しくは、CLI を使用したローカル・ソース・コードからのジョブの作成を参照してください。 イメージのビルドをさらに制御したい場合は、ジョブを作成 (または更新) してジョブを実行する前に、Code Engine を使用してイメージのビルドを選択することができます。

    例えば、ジョブのソースの開発を進化させながら、ローカル・ソースのビルドを Code Engine に処理させることができます。 その後、イメージが成熟すると、目的の特定のイメージを参照するようにジョブを更新できます。 必要に応じて、このプロセスを繰り返すことができます。

    更新されたジョブを実行すると、イメージにタグが指定されていない限り、参照されたコンテナー・イメージの最新バージョンがジョブ実行に使用されます。 イメージにタグが指定されている場合、タグ付けされたイメージがジョブ実行に使用されます。

コード・サンプルがさらに必要ですか? 「 IBM Cloud Code Engine 」のサンプルについては、 GitHub リポジトリをご覧ください。