Skip to content

Commit 5ff0d61

Browse files
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into fixingSanNet
2 parents 2d1a115 + 6dff5a7 commit 5ff0d61

File tree

3 files changed

+63
-47
lines changed

3 files changed

+63
-47
lines changed

articles/azure-vmware/concepts-private-clouds-clusters.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: Concepts - Private clouds and clusters
33
description: Understand the key capabilities of Azure VMware Solution software-defined data centers and VMware vSphere clusters.
44
ms.topic: conceptual
55
ms.service: azure-vmware
6-
ms.date: 1/8/2024
6+
ms.date: 1/16/2024
77
ms.custom: engagement-fy23
88
---
99

@@ -70,7 +70,7 @@ The Multi-AZ capability for Azure VMware Solution Stretched Clusters is also tag
7070
| East US | AZ01 | AV36P | No |
7171
| East US | AZ02 | AV36P | No |
7272
| East US | AZ03 | AV36, AV36P, AV64 | No |
73-
| East US 2 | AZ01 | AV36 | No |
73+
| East US 2 | AZ01 | AV36, AV64 | No |
7474
| East US 2 | AZ02 | AV36P, AV52, AV64 | No |
7575
| France Central | AZ01 | AV36 | No |
7676
| Germany West Central | AZ02 | AV36 | Yes |

articles/batch/batch-docker-container-workloads.md

Lines changed: 59 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Container workloads on Azure Batch
33
description: Learn how to run and scale apps from container images on Azure Batch. Create a pool of compute nodes that support running container tasks.
44
ms.topic: how-to
5-
ms.date: 12/06/2023
5+
ms.date: 01/10/2024
66
ms.devlang: csharp, python
77
ms.custom: seodec18, devx-track-csharp, devx-track-linux
88
---
@@ -47,7 +47,7 @@ Keep in mind the following limitations:
4747
- For Windows container workloads, you should choose a multicore VM size for your pool.
4848

4949
> [!IMPORTANT]
50-
> Note that docker, by default, will create a network bridge with a subnet specification of `172.17.0.0/16`. If you are specifying a
50+
> Docker, by default, will create a network bridge with a subnet specification of `172.17.0.0/16`. If you are specifying a
5151
> [virtual network](batch-virtual-network.md) for your pool, please ensure that there are no conflicting IP ranges.
5252
5353
## Supported VM images
@@ -56,12 +56,16 @@ Use one of the following supported Windows or Linux images to create a pool of V
5656

5757
### Windows support
5858

59-
Batch supports Windows server images that have container support designations. Typically, these image SKU names are suffixed with `win_2016_mcr_20_10` or `win_2022_mcr_20_10` under the Mirantis publisher and are offered as `windows_2016_with_mirantis_container_runtime` or `windows_2022_with_mirantis_container_runtime`. Additionally, [the API to list all supported images in Batch](batch-linux-nodes.md#list-of-virtual-machine-images) denotes a `DockerCompatible` capability if the image supports Docker containers.
59+
Batch supports Windows server images that have container support designations.
60+
[The API to list all supported images in Batch](batch-linux-nodes.md#list-of-virtual-machine-images) denotes
61+
a `DockerCompatible` capability if the image supports Docker containers. Batch allows, but doesn't directly
62+
support, images published by Mirantis with capability noted as `DockerCompatible`. These images may only be
63+
deployed under a User Subscription pool allocation mode Batch account.
6064

6165
You can also create custom images from VMs running Docker on Windows.
6266

6367
> [!NOTE]
64-
> The image SKUs `-with-containers` or `-with-containers-smalldisk` are retired. Please see the [announcement](https://techcommunity.microsoft.com/t5/containers/updates-to-the-windows-container-runtime-support/ba-p/2788799) for details and alternative container runtime options for Kubernetes environment.
68+
> The image SKUs `-with-containers` or `-with-containers-smalldisk` are retired. Please see the [announcement](https://techcommunity.microsoft.com/t5/containers/updates-to-the-windows-container-runtime-support/ba-p/2788799) for details and alternative container runtime options.
6569
6670
### Linux support
6771

@@ -73,6 +77,9 @@ For Linux container workloads, Batch currently supports the following Linux imag
7377
- Offer: `centos-container`
7478
- Offer: `ubuntu-server-container`
7579

80+
- Publisher: `microsoft-dsvm`
81+
- Offer: `ubuntu-hpc`
82+
7683
#### VM sizes with RDMA
7784

7885
- Publisher: `microsoft-azure-batch`
@@ -82,10 +89,13 @@ For Linux container workloads, Batch currently supports the following Linux imag
8289
- Publisher: `microsoft-dsvm`
8390
- Offer: `ubuntu-hpc`
8491

92+
> [!IMPORTANT]
93+
> It is recommended to use the `microsoft-dsvm` `ubuntu-hpc` VM image if possible.
94+
8595
#### Notes
8696
The docker data root of the above images lies in different places:
87-
- For the batch image `microsoft-azure-batch` (Offer: `centos-container-rdma`, etc.), the docker data root is mapped to _/mnt/batch/docker_, which is usually located on the temporary disk.
88-
- For the HPC image, or `microsoft-dsvm` (Offer: `ubuntu-hpc`, etc.), the docker data root is unchanged from the Docker default which is _/var/lib/docker_ on Linux and _C:\ProgramData\Docker_ on Windows. These folders are usually located on the OS disk.
97+
- For the Azure Batch published `microsoft-azure-batch` images (Offer: `centos-container-rdma`, etc.), the docker data root is mapped to _/mnt/batch/docker_, which is located on the temporary disk.
98+
- For the HPC image, or `microsoft-dsvm` (Offer: `ubuntu-hpc`, etc.), the docker data root is unchanged from the Docker default which is _/var/lib/docker_ on Linux and _C:\ProgramData\Docker_ on Windows. These folders are located on the OS disk.
8999

90100
For non-Batch published images, the OS disk has the potential risk of being filled up quickly as container images are downloaded.
91101

@@ -136,9 +146,9 @@ To configure a container-enabled pool without prefetched container images, defin
136146

137147
```python
138148
image_ref_to_use = batch.models.ImageReference(
139-
publisher='microsoft-azure-batch',
140-
offer='ubuntu-server-container',
141-
sku='20-04-lts',
149+
publisher='microsoft-dsvm',
150+
offer='ubuntu-hpc',
151+
sku='2204',
142152
version='latest')
143153

144154
"""
@@ -152,17 +162,17 @@ new_pool = batch.models.PoolAddParameter(
152162
virtual_machine_configuration=batch.models.VirtualMachineConfiguration(
153163
image_reference=image_ref_to_use,
154164
container_configuration=container_conf,
155-
node_agent_sku_id='batch.node.ubuntu 20.04'),
156-
vm_size='STANDARD_D1_V2',
165+
node_agent_sku_id='batch.node.ubuntu 22.04'),
166+
vm_size='STANDARD_D2S_V3',
157167
target_dedicated_nodes=1)
158168
...
159169
```
160170

161171
```csharp
162172
ImageReference imageReference = new ImageReference(
163-
publisher: "microsoft-azure-batch",
164-
offer: "ubuntu-server-container",
165-
sku: "20-04-lts",
173+
publisher: "microsoft-dsvm",
174+
offer: "ubuntu-hpc",
175+
sku: "2204",
166176
version: "latest");
167177

168178
// Specify container configuration. This is required even though there are no prefetched images.
@@ -171,14 +181,14 @@ ContainerConfiguration containerConfig = new ContainerConfiguration();
171181
// VM configuration
172182
VirtualMachineConfiguration virtualMachineConfiguration = new VirtualMachineConfiguration(
173183
imageReference: imageReference,
174-
nodeAgentSkuId: "batch.node.ubuntu 20.04");
184+
nodeAgentSkuId: "batch.node.ubuntu 22.04");
175185
virtualMachineConfiguration.ContainerConfiguration = containerConfig;
176186

177187
// Create pool
178188
CloudPool pool = batchClient.PoolOperations.CreatePool(
179189
poolId: poolId,
180190
targetDedicatedComputeNodes: 1,
181-
virtualMachineSize: "STANDARD_D1_V2",
191+
virtualMachineSize: "STANDARD_D2S_V3",
182192
virtualMachineConfiguration: virtualMachineConfiguration);
183193
```
184194

@@ -190,9 +200,9 @@ The following basic Python example shows how to prefetch a standard Ubuntu conta
190200

191201
```python
192202
image_ref_to_use = batch.models.ImageReference(
193-
publisher='microsoft-azure-batch',
194-
offer='ubuntu-server-container',
195-
sku='20-04-lts',
203+
publisher='microsoft-dsvm',
204+
offer='ubuntu-hpc',
205+
sku='2204',
196206
version='latest')
197207

198208
"""
@@ -207,8 +217,8 @@ new_pool = batch.models.PoolAddParameter(
207217
virtual_machine_configuration=batch.models.VirtualMachineConfiguration(
208218
image_reference=image_ref_to_use,
209219
container_configuration=container_conf,
210-
node_agent_sku_id='batch.node.ubuntu 20.04'),
211-
vm_size='STANDARD_D1_V2',
220+
node_agent_sku_id='batch.node.ubuntu 22.04'),
221+
vm_size='STANDARD_D2S_V3',
212222
target_dedicated_nodes=1)
213223
...
214224
```
@@ -217,9 +227,9 @@ The following C# example assumes that you want to prefetch a TensorFlow image fr
217227

218228
```csharp
219229
ImageReference imageReference = new ImageReference(
220-
publisher: "microsoft-azure-batch",
221-
offer: "ubuntu-server-container",
222-
sku: "20-04-lts",
230+
publisher: "microsoft-dsvm",
231+
offer: "ubuntu-hpc",
232+
sku: "2204",
223233
version: "latest");
224234

225235
ContainerRegistry containerRegistry = new ContainerRegistry(
@@ -236,7 +246,7 @@ containerConfig.ContainerRegistries = new List<ContainerRegistry> { containerReg
236246
// VM configuration
237247
VirtualMachineConfiguration virtualMachineConfiguration = new VirtualMachineConfiguration(
238248
imageReference: imageReference,
239-
nodeAgentSkuId: "batch.node.ubuntu 20.04");
249+
nodeAgentSkuId: "batch.node.ubuntu 22.04");
240250
virtualMachineConfiguration.ContainerConfiguration = containerConfig;
241251

242252
// Set a native host command line start task
@@ -245,7 +255,7 @@ StartTask startTaskContainer = new StartTask( commandLine: "<native-host-command
245255
// Create pool
246256
CloudPool pool = batchClient.PoolOperations.CreatePool(
247257
poolId: poolId,
248-
virtualMachineSize: "Standard_NC6",
258+
virtualMachineSize: "Standard_NC6S_V3",
249259
virtualMachineConfiguration: virtualMachineConfiguration);
250260

251261
// Start the task in the pool
@@ -259,10 +269,10 @@ You can also prefetch container images by authenticating to a private container
259269

260270
```python
261271
image_ref_to_use = batch.models.ImageReference(
262-
publisher='microsoft-azure-batch',
263-
offer='ubuntu-server-container',
264-
sku='20-04-lts',
265-
version='latest')
272+
publisher='microsoft-dsvm',
273+
offer='ubuntu-hpc',
274+
sku='2204',
275+
version='latest')
266276

267277
# Specify a container registry
268278
container_registry = batch.models.ContainerRegistry(
@@ -280,8 +290,8 @@ new_pool = batch.models.PoolAddParameter(
280290
virtual_machine_configuration=batch.models.VirtualMachineConfiguration(
281291
image_reference=image_ref_to_use,
282292
container_configuration=container_conf,
283-
node_agent_sku_id='batch.node.ubuntu 20.04'),
284-
vm_size='STANDARD_D1_V2',
293+
node_agent_sku_id='batch.node.ubuntu 22.04'),
294+
vm_size='STANDARD_D2S_V3',
285295
target_dedicated_nodes=1)
286296
```
287297

@@ -301,21 +311,25 @@ containerConfig.ContainerRegistries = new List<ContainerRegistry> { containerReg
301311
// VM configuration
302312
VirtualMachineConfiguration virtualMachineConfiguration = new VirtualMachineConfiguration(
303313
imageReference: imageReference,
304-
nodeAgentSkuId: "batch.node.ubuntu 20.04");
314+
nodeAgentSkuId: "batch.node.ubuntu 22.04");
305315
virtualMachineConfiguration.ContainerConfiguration = containerConfig;
306316

307317
// Create pool
308318
CloudPool pool = batchClient.PoolOperations.CreatePool(
309319
poolId: poolId,
310-
targetDedicatedComputeNodes: 4,
311-
virtualMachineSize: "Standard_NC6",
320+
targetDedicatedComputeNodes: 2,
321+
virtualMachineSize: "Standard_NC6S_V3",
312322
virtualMachineConfiguration: virtualMachineConfiguration);
313323
...
314324
```
315325

316326
### Managed identity support for ACR
317327

318-
When you access containers stored in [Azure Container Registry](https://azure.microsoft.com/services/container-registry), either a username/password or a managed identity can be used to authenticate with the service. To use a managed identity, first ensure that the identity has been [assigned to the pool](managed-identity-pools.md) and that the identity has the `AcrPull` role assigned for the container registry you wish to access. Then, simply tell Batch which identity to use when authenticating with ACR.
328+
When you access containers stored in [Azure Container Registry](https://azure.microsoft.com/services/container-registry),
329+
either a username/password or a managed identity can be used to authenticate with the service. To use a managed identity,
330+
first ensure that the identity has been [assigned to the pool](managed-identity-pools.md) and that the identity has the
331+
`AcrPull` role assigned for the container registry you wish to access. Then, instruct Batch with which identity to use
332+
when authenticating with ACR.
319333

320334
```csharp
321335
ContainerRegistry containerRegistry = new ContainerRegistry(
@@ -332,14 +346,14 @@ containerConfig.ContainerRegistries = new List<ContainerRegistry> { containerReg
332346
// VM configuration
333347
VirtualMachineConfiguration virtualMachineConfiguration = new VirtualMachineConfiguration(
334348
imageReference: imageReference,
335-
nodeAgentSkuId: "batch.node.ubuntu 20.04");
349+
nodeAgentSkuId: "batch.node.ubuntu 22.04");
336350
virtualMachineConfiguration.ContainerConfiguration = containerConfig;
337351

338352
// Create pool
339353
CloudPool pool = batchClient.PoolOperations.CreatePool(
340354
poolId: poolId,
341-
targetDedicatedComputeNodes: 4,
342-
virtualMachineSize: "Standard_NC6",
355+
targetDedicatedComputeNodes: 2,
356+
virtualMachineSize: "Standard_NC6S_V3",
343357
virtualMachineConfiguration: virtualMachineConfiguration);
344358
...
345359
```
@@ -348,12 +362,10 @@ CloudPool pool = batchClient.PoolOperations.CreatePool(
348362

349363
To run a container task on a container-enabled pool, specify container-specific settings. Settings include the image to use, registry, and container run options.
350364

351-
- Use the `ContainerSettings` property of the task classes to configure container-specific settings. These settings are defined by the [TaskContainerSettings](/dotnet/api/microsoft.azure.batch.taskcontainersettings) class. Note that the `--rm` container option doesn't require an additional `--runtime` option since it's taken care of by Batch.
365+
- Use the `ContainerSettings` property of the task classes to configure container-specific settings. These settings are defined by the [TaskContainerSettings](/dotnet/api/microsoft.azure.batch.taskcontainersettings) class. The `--rm` container option doesn't require an additional `--runtime` option since it's taken care of by Batch.
352366

353367
- If you run tasks on container images, the [cloud task](/dotnet/api/microsoft.azure.batch.cloudtask) and [job manager task](/dotnet/api/microsoft.azure.batch.cloudjob.jobmanagertask) require container settings. However, the [start task](/dotnet/api/microsoft.azure.batch.starttask), [job preparation task](/dotnet/api/microsoft.azure.batch.cloudjob.jobpreparationtask), and [job release task](/dotnet/api/microsoft.azure.batch.cloudjob.jobreleasetask) don't require container settings (that is, they can run within a container context or directly on the node).
354368

355-
- For Windows, tasks must be run with [ElevationLevel](/rest/api/batchservice/task/add#elevationlevel) set to `admin`.
356-
357369
- For Linux, Batch maps the user/group permission to the container. If access to any folder within the container requires Administrator permission, you may need to run the task as pool scope with admin elevation level. This ensures that Batch runs the task as root in the container context. Otherwise, a non-admin user might not have access to those folders.
358370

359371
- For container pools with GPU-enabled hardware, Batch automatically enables GPU for container tasks, so you shouldn't include the `–gpus` argument.
@@ -376,14 +388,18 @@ Optional [ContainerRunOptions](/dotnet/api/microsoft.azure.batch.taskcontainerse
376388

377389
### Container task working directory
378390

379-
A Batch container task executes in a working directory in the container that's very similar to the directory that Batch sets up for a regular (non-container) task. Note that this working directory is different from the [WORKDIR](https://docs.docker.com/engine/reference/builder/#workdir) if configured in the image, or the default container working directory (`C:\` on a Windows container, or `/` on a Linux container).
391+
A Batch container task executes in a working directory in the container that's similar to the directory that Batch sets up for a regular (non-container) task. This working directory is different from the [WORKDIR](https://docs.docker.com/engine/reference/builder/#workdir) if configured in the image, or the default container working directory (`C:\` on a Windows container, or `/` on a Linux container).
380392

381393
For a Batch container task:
382394

383395
- All directories recursively below the `AZ_BATCH_NODE_ROOT_DIR` on the host node (the root of Azure Batch directories) are mapped into the container.
384396
- All task environment variables are mapped into the container.
385397
- The task working directory `AZ_BATCH_TASK_WORKING_DIR` on the node is set the same as for a regular task and mapped into the container.
386398

399+
> [!IMPORTANT]
400+
> For Windows container pools on VM families with ephemeral disks, the entire ephemeral disk is mapped to container space
401+
> due to Windows container limitations.
402+
387403
These mappings allow you to work with container tasks in much the same way as non-container tasks. For example, install applications using application packages, access resource files from Azure Storage, use task environment settings, and persist task output files after the container stops.
388404

389405
### Troubleshoot container tasks

articles/container-registry/container-registry-java-quickstart.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ Finally, you'll update your project configuration and use the command prompt to
115115
</properties>
116116
```
117117

118-
1. Update the `<plugins>` collection in the *pom.xml* file so that the `<plugin>` element contains and an entry for the `jib-maven-plugin`, as shown in the following example. Note that we are using a base image from the Microsoft Container Registry (MCR): `mcr.microsoft.com/java/jdk:8-zulu-alpine`, which contains an officially supported JDK for Azure. For other MCR base images with officially supported JDKs, see [Install the Microsoft Build of OpenJDK.](/java/openjdk/install)
118+
1. Update the `<plugins>` collection in the *pom.xml* file so that the `<plugin>` element contains and an entry for the `jib-maven-plugin`, as shown in the following example. Note that we are using a base image from the Microsoft Container Registry (MCR): `mcr.microsoft.com/openjdk/jdk:11-ubuntu`, which contains an officially supported JDK for Azure. For other MCR base images with officially supported JDKs, see [Install the Microsoft Build of OpenJDK.](/java/openjdk/install)
119119

120120
```xml
121121
<plugin>
@@ -124,7 +124,7 @@ Finally, you'll update your project configuration and use the command prompt to
124124
<version>${jib-maven-plugin.version}</version>
125125
<configuration>
126126
<from>
127-
<image>mcr.microsoft.com/java/jdk:8-zulu-alpine</image>
127+
<image>mcr.microsoft.com/openjdk/jdk:11-ubuntu</image>
128128
</from>
129129
<to>
130130
<image>${docker.image.prefix}/${project.artifactId}</image>

0 commit comments

Comments
 (0)