Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure Batch bietet eine Isolationskonfiguration auf Aufgabenebene, sodass Aufgaben das Einbinden des gesamten kurzlebigen Datenträgers oder des gesamten Verzeichnisses AZ_BATCH_NODE_ROOT_DIR vermeiden können. Stattdessen können Sie die spezifischen Azure Batch-Datenpfade anpassen, die Sie an die Containeraufgabe anfügen möchten.
Hinweis
Azure Batch-Datenpfad bezieht sich auf die spezifischen Pfade in einem Azure Batch-Knoten, der für Aufgaben und Anwendungen bestimmt ist. Alle diese Pfade befinden sich unter AZ_BATCH_NODE_ROOT_DIR.
Gründe für ein Isolationsfeature in Containeraufgaben
In einer Windows-Containeraufgaben-Workload wird der gesamte kurzlebige Datenträger (D:) an den Container der Aufgabe angefügt. Bei einer Workload für Linux-Containeraufgaben fügt Azure Batch das gesamte Verzeichnis AZ_BATCH_NODE_ROOT_DIR an den Container der Aufgabe an (im ReadWrite-Modus). Wenn Sie jedoch Ihre Containervolumes anpassen möchten, kann dieses Setup dazu führen, dass einige Daten für alle Container freigegeben werden, die auf dem Knoten ausgeführt werden. Um das gleiche Problem zu beheben, unterstützen wir die Möglichkeit, die Azure Batch-Datenpfade anzupassen, die Sie an den Aufgabencontainer anfügen möchten.
- Sicherheit: Verhindert, dass die Containeraufgabendaten auf den Hostcomputer übertragen werden oder Daten auf dem Hostcomputer geändert werden.
- Anpassen: Sie können Ihre Container-Task-Volumes nach Bedarf anpassen.
Hinweis
Um dieses Feature zu verwenden, stellen Sie sicher, dass Ihre Knoten-Agent-Version größer als 1.11.11 ist.
Konfigurieren von Anhängen für Hostdatenpfade für Container
- Für Linux-Knoten: Wir können einfach denselben Pfad im Container anfügen.
- Für Windows-Knoten: Da Windows-Container keinen D:-Datenträger haben, müssen wir den Pfad einbinden. Sie können einen der aufgelisteten Pfade zum Einbinden auswählen.
| Azure Batch-Datenpfad | Pfad auf dem Hostcomputer | Pfad im Container |
|---|---|---|
| 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 |
Sie können einen der aufgelisteten Datenpfade zum Anfügen an den Container auswählen. Aus allen nicht ausgewählten Datenpfade werden die zugehörigen Umgebungsvariablen entfernt.
| Datenpfadenumeration | Datenpfad wird an den Container angefügt |
|---|---|
| Shared | AZ_BATCH_NODE_SHARED_DIR |
| Anwendungen | 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 |
| Aufgabe | AZ_BATCH_TASK_DIR, AZ_BATCH_TASK_WORKING_DIR |
Ausführen einer Containerisolationsaufgabe
Hinweis
- Wenn Sie eine leere Liste verwenden, bindet NodeAgent keine Datenpfade in den Container der Aufgabe ein. Wenn Sie NULL verwenden, bindet NodeAgent den gesamten kurzlebigen Datenträger (in Windows) oder
AZ_BATCH_NODE_ROOT_DIR(in Linux) ein. - Wenn Sie den Aufgabendatenpfad nicht in den Container einbinden, müssen Sie die Eigenschaft workingDirectory der Aufgabe auf „containerImageDefault“ festlegen.
Bevor Sie eine Containerisolationsaufgabe ausführen, müssen Sie einen Pool mit einem Container erstellen. Weitere Informationen zur Erstellung finden Sie in der Anleitung Docker-Containerworkload.
Im folgenden Beispiel wird das Erstellen einer Containeraufgabe mit Datenisolation mithilfe der REST-API beschrieben:
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"
}
}
}