Szkolenie
Moduł
Uruchamianie obrazów kontenerów w usłudze Azure Container Instances - Training
Uruchamianie obrazów kontenerów w usłudze Azure Container Instances
Ta przeglądarka nie jest już obsługiwana.
Przejdź na przeglądarkę Microsoft Edge, aby korzystać z najnowszych funkcji, aktualizacji zabezpieczeń i pomocy technicznej.
Usługa Azure Batch umożliwia uruchamianie i skalowanie dużej liczby zadań obliczania wsadowego na platformie Azure. Zadania usługi Batch mogą być uruchamiane bezpośrednio na maszynach wirtualnych (węzłach) w puli usługi Batch, ale można również skonfigurować pulę usługi Batch do uruchamiania zadań w kontenerach zgodnych z platformą Docker w węzłach. W tym artykule pokazano, jak utworzyć pulę węzłów obliczeniowych, które obsługują uruchamianie zadań kontenera, a następnie uruchamiać zadania kontenera w puli.
Przykłady kodu w tym miejscu korzystają z zestawów SDK platformy .NET i języka Python usługi Batch. Możesz również użyć innych zestawów SDK i narzędzi usługi Batch, w tym witryny Azure Portal, do tworzenia pul usługi Batch z obsługą kontenerów i uruchamiania zadań kontenera.
Kontenery umożliwiają łatwe uruchamianie zadań usługi Batch bez konieczności zarządzania środowiskiem i zależnościami w celu uruchamiania aplikacji. Kontenery wdrażają aplikacje jako lekkie, przenośne, samodzielne jednostki, które mogą działać w kilku różnych środowiskach. Na przykład skompiluj i przetestuj kontener lokalnie, a następnie przekaż obraz kontenera do rejestru na platformie Azure lub w innym miejscu. Model wdrażania kontenera zapewnia, że środowisko uruchomieniowe aplikacji jest zawsze poprawnie zainstalowane i skonfigurowane wszędzie tam, gdzie hostujesz aplikację. Zadania oparte na kontenerach w usłudze Batch mogą również korzystać z funkcji zadań niekontenerowych, w tym pakietów aplikacji i zarządzania plikami zasobów i plikami wyjściowymi.
Należy zapoznać się z pojęciami dotyczącymi kontenerów i sposobami tworzenia puli i zadania usługi Batch.
Wersje zestawu SDK: Zestawy SDK usługi Batch obsługują obrazy kontenerów w następujących wersjach:
Konta: w ramach subskrypcji platformy Azure musisz utworzyć konto usługi Batch i opcjonalnie konto usługi Azure Storage.
Obraz obsługiwanej maszyny wirtualnej: kontenery są obsługiwane tylko w pulach utworzonych za pomocą konfiguracji maszyny wirtualnej z obsługiwanego obrazu (wymienionego w następnej sekcji). Jeśli podasz obraz niestandardowy, zapoznaj się z zagadnieniami w poniższej sekcji i wymaganiami w temacie Używanie obrazu zarządzanego do utworzenia niestandardowej puli obrazów.
Uwaga
Z wersji zestawu SDK usługi Batch:
Obecnie właściwość wymaga Type
przekazania, containerConfiguration
a obsługiwane wartości to: ContainerType.DockerCompatible
i ContainerType.CriCompatible
.
Pamiętaj o następujących ograniczeniach:
Ważne
Docker domyślnie tworzy mostek sieciowy ze specyfikacją podsieci 172.17.0.0/16
. Jeśli określasz sieć wirtualną dla puli, upewnij się, że nie ma konfliktów zakresów adresów IP.
Użyj jednego z następujących obsługiwanych obrazów systemu Windows lub Linux, aby utworzyć pulę węzłów obliczeniowych maszyn wirtualnych dla obciążeń kontenera. Aby uzyskać więcej informacji na temat obrazów witryny Marketplace zgodnych z usługą Batch, zobacz Lista obrazów maszyn wirtualnych.
Usługa Batch obsługuje obrazy serwera z systemem Windows, które obsługują oznaczenia kontenerów.
Interfejs API umożliwiający wyświetlenie listy wszystkich obsługiwanych obrazów w usłudze DockerCompatible
Batch oznacza możliwość, jeśli obraz obsługuje kontenery platformy Docker. Usługa Batch zezwala, ale nie obsługuje bezpośrednio obrazów opublikowanych przez Firmę Mirantis z możliwością zanotowaną jako DockerCompatible
. Te obrazy mogą być wdrażane tylko w trybie alokacji puli subskrypcji użytkownika w trybie usługi Batch.
Można również utworzyć obraz niestandardowy, aby włączyć funkcjonalność kontenera w systemie Windows.
Uwaga
Jednostki -with-containers
SKU obrazu lub -with-containers-smalldisk
są wycofane. Zapoznaj się z ogłoszeniem, aby uzyskać szczegółowe informacje i alternatywne opcje środowiska uruchomieniowego kontenera.
W przypadku obciążeń kontenerów systemu Linux usługa Batch obsługuje obecnie następujące obrazy systemu Linux opublikowane w witrynie Azure Marketplace bez konieczności używania obrazu niestandardowego.
microsoft-dsvm
ubuntu-hpc
almalinux
8-hpc-gen1
8-hpc-gen2
Obecnie istnieją inne obrazy opublikowane przez microsoft-azure-batch
usługę , które obsługują obciążenia kontenerów:
microsoft-azure-batch
ubuntu-server-container
ubuntu-server-container-rdma
(Do użytku wyłącznie na jednostkach SKU maszyn wirtualnych za pomocą rozwiązania Infiniband)Ostrzeżenie
Zaleca się używanie obrazów innych niż te opublikowane przez microsoft-azure-batch
program , ponieważ te obrazy są przestarzałe ze względu na zbliżający się koniec życia obrazu.
Katalog główny danych platformy Docker powyższych obrazów znajduje się w różnych miejscach:
microsoft-dsvm
(Oferta: ubuntu-hpc
itp.) katalog główny danych platformy Docker jest niezmieniony z domyślnego ustawienia platformy Docker, czyli /var/lib/docker w systemach Linux i C:\ProgramData\Docker w systemie Windows. Te foldery znajdują się na dysku systemu operacyjnego.W przypadku obrazów nieopublikowanych w usłudze Batch dysk systemu operacyjnego ma potencjalne ryzyko szybkiego wypełnienia obrazów kontenerów.
Zmień katalog główny danych platformy Docker w zadaniu uruchamiania podczas tworzenia puli w usłudze BatchExplorer. Oto przykład polecenia Uruchom zadanie:
1) sudo systemctl stop docker
2) sudo vi /lib/systemd/system/docker.service
+++
FROM:
ExecStart=/usr/bin/docker daemon -H fd://
TO:
ExecStart=/usr/bin/docker daemon -g /new/path/docker -H fd://
+++
3) sudo systemctl daemon-reload
4) sudo systemctl start docker
Te obrazy są obsługiwane tylko do użytku w pulach usługi Azure Batch i są przeznaczone do wykonywania kontenera platformy Docker. Funkcje te:
-rdma
z sufiksem są wstępnie skonfigurowane z obsługą rozmiarów maszyn wirtualnych RDMA InfiniBand. Te obrazy maszyn wirtualnych nie powinny być używane z rozmiarami maszyn wirtualnych, które nie obsługują rozwiązania InfiniBand.Można również tworzyć obrazy niestandardowe zgodne z kontenerami usługi Batch w jednej z dystrybucji systemu Linux, które są zgodne z usługą Batch. W przypadku obsługi platformy Docker na obrazie niestandardowym zainstaluj odpowiednie środowisko uruchomieniowe zgodne z platformą Docker, takie jak wersja platformy Docker lub Mirantis Container Runtime. Instalowanie tylko narzędzia zgodnego z interfejsem wiersza polecenia platformy Docker jest niewystarczające; Wymagane jest środowisko uruchomieniowe zgodne z aparatem platformy Docker.
Ważne
Ani firma Microsoft, ani Usługa Azure Batch nie zapewni obsługi problemów związanych z platformą Docker (dowolną wersją lub wydaniem), środowiskiem uruchomieniowym Kontenera Mirantis lub środowiskami uruchomieniowymi Moby. Klienci, którzy chcą używać tych środowisk uruchomieniowych na swoich obrazach, powinni skontaktować się z firmą lub jednostką zapewniającą obsługę problemów ze środowiskiem uruchomieniowym.
Więcej zagadnień dotyczących używania niestandardowego obrazu systemu Linux:
Aby umożliwić puli usługi Batch uruchamianie obciążeń kontenerów, należy określić ustawienia ContainerConfiguration w obiekcie VirtualMachineConfiguration puli. Ten artykuł zawiera linki do dokumentacji interfejsu API platformy .NET usługi Batch. Odpowiednie ustawienia znajdują się w interfejsie API języka Python usługi Batch.
Pulę z obsługą kontenerów można utworzyć z wstępnie pobranymi obrazami kontenerów lub bez ich użycia, jak pokazano w poniższych przykładach. Proces ściągania (lub pobierania wstępnego) umożliwia wstępne ładowanie obrazów kontenerów z usługi Docker Hub lub innego rejestru kontenerów w Internecie. Aby uzyskać najlepszą wydajność, użyj rejestru kontenerów platformy Azure w tym samym regionie co konto usługi Batch.
Zaletą wstępnego pobierania obrazów kontenerów jest to, że gdy zadania po raz pierwszy zaczynają działać, nie muszą czekać na pobranie obrazu kontenera. Konfiguracja kontenera ściąga obrazy kontenerów na maszyny wirtualne po utworzeniu puli. Zadania uruchamiane w puli mogą następnie odwoływać się do listy obrazów kontenerów i opcji uruchamiania kontenera.
Uwaga
Usługa Docker Hub ogranicza liczbę ściągnięcia obrazów. Upewnij się, że obciążenie nie przekracza opublikowanych limitów szybkości dla obrazów opartych na usłudze Docker Hub. Zaleca się bezpośrednie używanie usługi Azure Container Registry lub korzystanie z pamięci podręcznej Artifact w usłudze ACR.
Aby skonfigurować pulę z obsługą kontenerów bez wstępnie pobranych obrazów kontenerów, zdefiniuj ContainerConfiguration
obiekty i VirtualMachineConfiguration
, jak pokazano w poniższych przykładach. W tych przykładach użyto obrazu systemu Ubuntu Server dla pul kontenerów usługi Azure Batch z witryny Marketplace.
Uwaga: wersja systemu Ubuntu Server używana w tym przykładzie służy do celów ilustracyjnych. Możesz zmienić node_agent_sku_id na używaną wersję.
image_ref_to_use = batch.models.ImageReference(
publisher='microsoft-dsvm',
offer='ubuntu-hpc',
sku='2204',
version='latest')
"""
Specify container configuration. This is required even though there are no prefetched images.
"""
container_conf = batch.models.ContainerConfiguration()
new_pool = batch.models.PoolAddParameter(
id=pool_id,
virtual_machine_configuration=batch.models.VirtualMachineConfiguration(
image_reference=image_ref_to_use,
container_configuration=container_conf,
node_agent_sku_id='batch.node.ubuntu 22.04'),
vm_size='STANDARD_D2S_V3',
target_dedicated_nodes=1)
...
ImageReference imageReference = new ImageReference(
publisher: "microsoft-dsvm",
offer: "ubuntu-hpc",
sku: "2204",
version: "latest");
// Specify container configuration. This is required even though there are no prefetched images.
ContainerConfiguration containerConfig = new ContainerConfiguration();
// VM configuration
VirtualMachineConfiguration virtualMachineConfiguration = new VirtualMachineConfiguration(
imageReference: imageReference,
nodeAgentSkuId: "batch.node.ubuntu 22.04");
virtualMachineConfiguration.ContainerConfiguration = containerConfig;
// Create pool
CloudPool pool = batchClient.PoolOperations.CreatePool(
poolId: poolId,
targetDedicatedComputeNodes: 1,
virtualMachineSize: "STANDARD_D2S_V3",
virtualMachineConfiguration: virtualMachineConfiguration);
Aby wstępnie pobrać obrazy kontenerów w puli, dodaj listę obrazów kontenerów (container_image_names
w języku Python) do pliku ContainerConfiguration
.
W poniższym podstawowym przykładzie języka Python pokazano, jak wstępnie pobrać standardowy obraz kontenera systemu Ubuntu z usługi Docker Hub.
image_ref_to_use = batch.models.ImageReference(
publisher='microsoft-dsvm',
offer='ubuntu-hpc',
sku='2204',
version='latest')
"""
Specify container configuration, fetching the official Ubuntu container image from Docker Hub.
"""
container_conf = batch.models.ContainerConfiguration(
container_image_names=['ubuntu'])
new_pool = batch.models.PoolAddParameter(
id=pool_id,
virtual_machine_configuration=batch.models.VirtualMachineConfiguration(
image_reference=image_ref_to_use,
container_configuration=container_conf,
node_agent_sku_id='batch.node.ubuntu 22.04'),
vm_size='STANDARD_D2S_V3',
target_dedicated_nodes=1)
...
W poniższym przykładzie w języku C# przyjęto założenie, że chcesz wstępnie pobrać obraz TensorFlow z usługi Docker Hub. Ten przykład obejmuje zadanie uruchamiania, które jest uruchamiane na hoście maszyny wirtualnej w węzłach puli. Możesz uruchomić zadanie uruchamiania na hoście, na przykład, aby zainstalować serwer plików, do którego można uzyskać dostęp z kontenerów.
ImageReference imageReference = new ImageReference(
publisher: "microsoft-dsvm",
offer: "ubuntu-hpc",
sku: "2204",
version: "latest");
ContainerRegistry containerRegistry = new ContainerRegistry(
registryServer: "https://hub.docker.com",
identityReference: new ComputeNodeIdentityReference() { ResourceId = "/subscriptions/SUB/resourceGroups/RG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name" }
);
// Specify container configuration, prefetching Docker images
ContainerConfiguration containerConfig = new ContainerConfiguration();
containerConfig.ContainerImageNames = new List<string> { "tensorflow/tensorflow:latest-gpu" };
containerConfig.ContainerRegistries = new List<ContainerRegistry> { containerRegistry };
// VM configuration
VirtualMachineConfiguration virtualMachineConfiguration = new VirtualMachineConfiguration(
imageReference: imageReference,
nodeAgentSkuId: "batch.node.ubuntu 22.04");
virtualMachineConfiguration.ContainerConfiguration = containerConfig;
// Set a native host command line start task
StartTask startTaskContainer = new StartTask( commandLine: "<native-host-command-line>" );
// Create pool
CloudPool pool = batchClient.PoolOperations.CreatePool(
poolId: poolId,
virtualMachineSize: "Standard_NC6S_V3",
virtualMachineConfiguration: virtualMachineConfiguration);
// Start the task in the pool
pool.StartTask = startTaskContainer;
...
Obrazy kontenerów można również pobrać wstępnie, uwierzytelniając się na prywatnym serwerze rejestru kontenerów. W poniższych przykładach ContainerConfiguration
obiekty i VirtualMachineConfiguration
pobierają wstępnie prywatny obraz TensorFlow z prywatnego rejestru kontenerów platformy Azure. Odwołanie do obrazu jest takie samo jak w poprzednim przykładzie.
image_ref_to_use = batch.models.ImageReference(
publisher='microsoft-dsvm',
offer='ubuntu-hpc',
sku='2204',
version='latest')
# Specify a container registry
subscription_id = "yyyy-yyy-yyy-yyy-yyy"
resource_group_name = "TestRG"
user_assigned_identity_name = "testUMI"
resource_id = f"/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{user_assigned_identity_name}"
container_registry = batch.models.ContainerRegistry(
registry_server="myRegistry.azurecr.io",
identity_reference = ComputeNodeIdentityReference(resource_id = resource_id))
# Create container configuration, prefetching Docker images from the container registry
container_conf = batch.models.ContainerConfiguration(
container_image_names = ["myRegistry.azurecr.io/samples/myImage"],
container_registries =[container_registry])
new_pool = batch.models.PoolAddParameter(
id="myPool",
virtual_machine_configuration=batch.models.VirtualMachineConfiguration(
image_reference=image_ref_to_use,
container_configuration=container_conf,
node_agent_sku_id='batch.node.ubuntu 22.04'),
vm_size='STANDARD_D2S_V3',
target_dedicated_nodes=1)
// Specify a container registry
ContainerRegistry containerRegistry = new ContainerRegistry(
registryServer: "myContainerRegistry.azurecr.io",
identityReference: new ComputeNodeIdentityReference() { ResourceId = "/subscriptions/SUB/resourceGroups/RG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name" }
);
// Create container configuration, prefetching Docker images from the container registry
ContainerConfiguration containerConfig = new ContainerConfiguration();
containerConfig.ContainerImageNames = new List<string> {
"myContainerRegistry.azurecr.io/tensorflow/tensorflow:latest-gpu" };
containerConfig.ContainerRegistries = new List<ContainerRegistry> { containerRegistry } );
// VM configuration
VirtualMachineConfiguration virtualMachineConfiguration = new VirtualMachineConfiguration(
imageReference: imageReference,
nodeAgentSkuId: "batch.node.ubuntu 22.04");
virtualMachineConfiguration.ContainerConfiguration = containerConfig;
// Create pool
CloudPool pool = batchClient.PoolOperations.CreatePool(
poolId: poolId,
targetDedicatedComputeNodes: 2,
virtualMachineSize: "Standard_NC6S_V3",
virtualMachineConfiguration: virtualMachineConfiguration);
...
Gdy uzyskujesz dostęp do kontenerów przechowywanych w usłudze Azure Container Registry, tożsamość zarządzana może służyć do uwierzytelniania w usłudze. Aby użyć tożsamości zarządzanej, najpierw upewnij się, że tożsamość została przypisana do puli i że tożsamość ma AcrPull
przypisaną rolę dla rejestru kontenerów, do którego chcesz uzyskać dostęp. Następnie poinstruuj usługę Batch, której tożsamości należy użyć podczas uwierzytelniania za pomocą usługi ACR.
ContainerRegistry containerRegistry = new ContainerRegistry(
registryServer: "myContainerRegistry.azurecr.io",
identityReference: new ComputeNodeIdentityReference() { ResourceId = "/subscriptions/SUB/resourceGroups/RG/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name" }
);
// Create container configuration, prefetching Docker images from the container registry
ContainerConfiguration containerConfig = new ContainerConfiguration();
containerConfig.ContainerImageNames = new List<string> {
"myContainerRegistry.azurecr.io/tensorflow/tensorflow:latest-gpu" };
containerConfig.ContainerRegistries = new List<ContainerRegistry> { containerRegistry } );
// VM configuration
VirtualMachineConfiguration virtualMachineConfiguration = new VirtualMachineConfiguration(
imageReference: imageReference,
nodeAgentSkuId: "batch.node.ubuntu 22.04");
virtualMachineConfiguration.ContainerConfiguration = containerConfig;
// Create pool
CloudPool pool = batchClient.PoolOperations.CreatePool(
poolId: poolId,
targetDedicatedComputeNodes: 2,
virtualMachineSize: "Standard_NC6S_V3",
virtualMachineConfiguration: virtualMachineConfiguration);
...
Aby uruchomić zadanie kontenera w puli z obsługą kontenerów, określ ustawienia specyficzne dla kontenera. Ustawienia obejmują obraz do użycia, rejestru i opcji uruchamiania kontenera.
ContainerSettings
Użyj właściwości klas zadań, aby skonfigurować ustawienia specyficzne dla kontenera. Te ustawienia są definiowane przez klasę TaskContainerSettings . Opcja --rm
kontenera nie wymaga innej --runtime
opcji, ponieważ jest ona zajęta przez usługę Batch.
Jeśli uruchamiasz zadania na obrazach kontenerów, zadanie w chmurze i zadanie menedżera zadań wymagają ustawień kontenera. Jednak zadanie podrzędne uruchamiania, zadanie przygotowania zadania i zadanie zwolnienia zadania nie wymagają ustawień kontenera (czyli mogą być uruchamiane w kontekście kontenera lub bezpośrednio w węźle).
W przypadku systemu Linux usługa Batch mapuje uprawnienie użytkownika/grupy do kontenera. Jeśli dostęp do dowolnego folderu w kontenerze wymaga uprawnień administratora, może być konieczne uruchomienie zadania jako zakresu puli z poziomem podniesienia uprawnień administratora. Dzięki temu usługa Batch uruchamia zadanie jako katalog główny w kontekście kontenera. W przeciwnym razie użytkownik niebędący administratorem może nie mieć dostępu do tych folderów.
W przypadku pul kontenerów ze sprzętem z obsługą procesora GPU usługa Batch automatycznie włącza procesor GPU dla zadań kontenerów, więc nie należy dołączać argumentu –gpus
.
Po uruchomieniu zadania kontenera usługa Batch automatycznie używa polecenia docker create w celu utworzenia kontenera przy użyciu obrazu określonego w zadaniu. Następnie usługa Batch kontroluje wykonywanie zadań w kontenerze.
Podobnie jak w przypadku zadań podrzędnych usługi Batch innych niż kontenery, należy ustawić wiersz polecenia dla zadania kontenera. Ponieważ usługa Batch automatycznie tworzy kontener, wiersz polecenia określa tylko polecenie lub polecenia uruchamiane w kontenerze.
Poniżej przedstawiono domyślne zachowania usługi Batch dotyczące zadań kontenera platformy Docker:
Upewnij się, że zapoznasz się z dokumentacją platformy Docker między programem ENTRYPOINT i CMD, aby zrozumieć efekty interakcji, które mogą wystąpić, gdy obrazy kontenerów mają określony punkt WEJŚCIAPOINT, a także określ wiersz polecenia zadania.
Jeśli chcesz zastąpić obraz kontenera ENTRYPOINT, możesz określić --entrypoint <args>
argument jako kontenerRunOption. Zapoznaj się z opcjonalnym elementem ContainerRunOptions , aby uzyskać argumenty, które można podać do polecenia używanego docker create
przez usługę Batch do utworzenia i uruchomienia kontenera. Aby na przykład ustawić katalog roboczy dla kontenera --workdir <directory>
, ustaw opcję .
Poniżej przedstawiono kilka przykładów obrazów kontenera i opcji kontenera usługi Batch lub wierszy poleceń zadań i ich efektu:
Zadanie kontenera usługi Batch jest wykonywane w katalogu roboczym w kontenerze podobnym do katalogu skonfigurowanego przez usługę Batch dla zwykłego zadania (niekontenerowego). Ten katalog roboczy różni się od katalogu WORKDIR , jeśli został skonfigurowany na obrazie, lub domyślnym katalogiem roboczym kontenera (C:\
w kontenerze systemu Windows lub /
w kontenerze systemu Linux).
W przypadku zadania kontenera usługi Batch:
AZ_BATCH_NODE_ROOT_DIR
węzła hosta (katalog główny katalogów usługi Azure Batch) są mapowane do kontenera.AZ_BATCH_TASK_WORKING_DIR
roboczy zadania w węźle jest ustawiony tak samo jak w przypadku zwykłego zadania i mapowany na kontener.Ważne
W przypadku pul kontenerów systemu Windows w rodzinach maszyn wirtualnych z dyskami efemerycznym cały efemeryczny dysk jest mapowany na miejsce kontenera ze względu na ograniczenia kontenera systemu Windows.
Te mapowania umożliwiają pracę z zadaniami kontenera w taki sam sposób jak zadania inne niż kontenery. Na przykład zainstaluj aplikacje przy użyciu pakietów aplikacji, uzyskaj dostęp do plików zasobów z usługi Azure Storage, użyj ustawień środowiska zadań i utrwali pliki wyjściowe zadania po zatrzymaniu kontenera.
Niezależnie od tego, jak element WORKDIR jest ustawiany dla obrazu kontenera, zarówno stdout.txt
jak i stderr.txt
są przechwytywane w obiekcie AZ_BATCH_TASK_DIR
.
Jeśli zadanie kontenera nie jest uruchamiane zgodnie z oczekiwaniami, może być konieczne uzyskanie informacji o konfiguracji WORKDIR lub ENTRYPOINT obrazu kontenera. Aby wyświetlić konfigurację, uruchom polecenie docker image inspect .
W razie potrzeby dostosuj ustawienia zadania kontenera na podstawie obrazu:
--workdir /app
.Poniższy fragment kodu języka Python przedstawia podstawowy wiersz polecenia uruchomiony w kontenerze utworzonym na podstawie fikcyjnego obrazu pobranego z usługi Docker Hub. --rm
W tym miejscu opcja kontenera usuwa kontener po zakończeniu zadania, a --workdir
opcja ustawia katalog roboczy. Wiersz polecenia zastępuje kontener ENTRYPOINT prostym poleceniem powłoki, które zapisuje mały plik w katalogu roboczym zadania na hoście.
task_id = 'sampletask'
task_container_settings = batch.models.TaskContainerSettings(
image_name='myimage',
container_run_options='--rm --workdir /')
task = batch.models.TaskAddParameter(
id=task_id,
command_line='/bin/sh -c \"echo \'hello world\' > $AZ_BATCH_TASK_WORKING_DIR/output.txt\"',
container_settings=task_container_settings
)
W poniższym przykładzie w języku C# przedstawiono podstawowe ustawienia kontenera dla zadania w chmurze:
// Simple container task command
string cmdLine = "c:\\app\\myApp.exe";
TaskContainerSettings cmdContainerSettings = new TaskContainerSettings (
imageName: "myimage",
containerRunOptions: "--rm --workdir c:\\app"
);
CloudTask containerTask = new CloudTask (
id: "Task1",
commandline: cmdLine);
containerTask.ContainerSettings = cmdContainerSettings;
Szkolenie
Moduł
Uruchamianie obrazów kontenerów w usłudze Azure Container Instances - Training
Uruchamianie obrazów kontenerów w usłudze Azure Container Instances
Dokumentacja
Węzły i pule usługi Azure Batch - Azure Batch
Dowiedz się więcej o węzłach obliczeniowych i pulach oraz o tym, jak są one używane w przepływie pracy usługi Azure Batch z punktu widzenia programowania.
Zadania i zadania podrzędne w usłudze Azure Batch - Azure Batch
Dowiedz się więcej o zadaniach i zadaniach oraz o tym, jak są one używane w przepływie pracy usługi Azure Batch z punktu widzenia programowania.
Tworzenie konta usługi Batch w witrynie Azure Portal - Azure Batch
Dowiedz się, jak używać witryny Azure Portal do tworzenia konta usługi Azure Batch i zarządzania nim na potrzeby uruchamiania obciążeń równoległych na dużą skalę w chmurze.