次の方法で共有


Batch コンテナー分離タスク

Azure Batch では、タスク レベルで分離構成が提供されるため、エフェメラル ディスク全体または AZ_BATCH_NODE_ROOT_DIR 全体のマウントを回避できます。 代わりに、コンテナー タスクにアタッチする特定の Azure Batch データ パスをカスタマイズできます。

Note

Azure Batch データ パス では、タスクとアプリケーション用に指定された Azure Batch ノード上の特定のパスが参照されます。 これらのパスはすべて、AZ_BATCH_NODE_ROOT_DIR の下にあります。

コンテナー タスクで分離機能が必要な理由

Windows コンテナー タスク ワークロードでは、エフェメラル ディスク (D:) 全体がタスクのコンテナーにアタッチされます。 Linux コンテナー タスク ワークロードの場合、Azure Batch では、 AZ_BATCH_NODE_ROOT_DIR 全体がタスクのコンテナーにアタッチされます。どちらも ReadWrite モードです。 ただし、コンテナー ボリュームをカスタマイズする場合は、このセットアップによって、ノード上で実行されているすべてのコンテナー間で一部のデータが共有される可能性があります。 これに対処するため、タスク コンテナーにアタッチする Azure Batch データ パスをカスタマイズする機能がサポートされています。

  • セキュリティ: コンテナー タスクのデータがホスト コンピューターに漏えいすることや、ホスト コンピューター上のデータが変更されることを防ぎます。
  • カスタマイズ: 必要に応じてコンテナー タスクのボリュームをカスタマイズできます。

Note

この機能を使用するには、ノード エージェントのバージョンが 1.11.11 より大きいことを確認してください。

コンテナーのホスト データ パス添付の構成

  • Linux ノードの場合: コンテナーに同じパスをアタッチできます。
  • Windows ノードの場合: Windows コンテナーには D: ディスクがないため、パスをマウントする必要があります。 マウントを選択できるパスの一覧を参照してください。
Azure Batch データ パス ホスト コンピューターのパス コンテナーのパス
AZ_BATCH_APP_PACKAGE_ D:\batch\tasks\applications C:\batch\tasks\applications
AZ_BATCH_NODE_SHARED_DIR D:\batch\tasks\shared C:\batch\tasks\shared
AZ_BATCH_NODE_STARTUP_DIR D:\batch\tasks\startup C:\batch\tasks\startup
AZ_BATCH_NODE_MOUNTS_DIR D:\batch\tasks\fsmounts C:\batch\tasks\fsmounts
AZ_BATCH_NODE_STARTUP_WORKING_DIR D:\batch\tasks\startup\wd C:\batch\tasks\startup\wd
AZ_BATCH_JOB_PREP_DIR C:\batch\tasks\workitems\{workitemname}\{jobname}\{jobpreptaskname} D:\batch\tasks\workitems\{workitemname}\{jobname}\{jobpreptaskname}
AZ_BATCH_JOB_PREP_WORKING_DIR C:\batch\tasks\workitems\{workitemname}\{jobname}\{jobpreptaskname}\wd D:\batch\tasks\workitems\{workitemname}\{jobname}\{jobpreptaskname}\wd
AZ_BATCH_TASK_DIR D:\batch\tasks\workitems\{workitemname}\{jobname}\{taskname} C:\batch\tasks\workitems\{workitemname}\{jobname}\{taskname}
AZ_BATCH_TASK_WORKING_DIR D:\batch\tasks\workitems\{workitemname}\{jobname}\{taskname}\wd C:\batch\tasks\workitems\{workitemname}\{jobname}\{taskname}\wd

コンテナーにアタッチするものとして選択できるデータ パスの一覧を参照してください。 選択されていないデータ パスからは、関連する環境変数が削除されています。

データ パス列挙型 データ パスはコンテナーにアタッチされます
共有 AZ_BATCH_NODE_SHARED_DIR
アプリケーション AZ_BATCH_APP_PACKAGE_*
Startup AZ_BATCH_NODE_STARTUP_DIR, AZ_BATCH_NODE_STARTUP_WORKING_DIR
Vfsmounts AZ_BATCH_NODE_MOUNTS_DIR
JobPrep AZ_BATCH_JOB_PREP_DIR, AZ_BATCH_JOB_PREP_WORKING_DIR
タスク AZ_BATCH_TASK_DIR, AZ_BATCH_TASK_WORKING_DIR

コンテナー分離タスクを実行する

Note

  • 空のリストを使用する場合、NodeAgent ではタスクのコンテナーにデータ パスがマウントされません。 null を使用すると、NodeAgent はエフェメラル ディスク全体 (Windows の場合) または AZ_BATCH_NODE_ROOT_DIR (Linux の場合) をマウントします。
  • タスク データ パスをコンテナーにマウントしない場合は、workingDirectory タスクのプロパティを "containerImageDefault" に設定する必要があります。

コンテナー分離タスクを実行する前に、コンテナーを含むプールを作成する必要があります。 これを作成する方法の詳細については、こちらの「Docker コンテナー ワークロード」ガイドを参照してください。

次の例では、REST API を使用してデータ分離を含むコンテナー タスクを作成する方法について説明します。

POST {batchUrl}/jobs/{jobId}/tasks?api-version=2024-07-01.20.0
{
    "id": "taskId",
    "commandLine": "bash -c 'echo hello'",
    "containerSettings": {
        "imageName": "ubuntu",
        "containerHostBatchBindMounts": [
            {
            "source": "Task",
            "isReadOnly": true
            }
        ]
    },
    "userIdentity": {
        "autoUser": {
            "scope": "task",
            "elevationLevel": "nonadmin"
        }
    }
}