Skip to content

Commit 75034d0

Browse files
committed
touchups
1 parent 931de6b commit 75034d0

File tree

1 file changed

+9
-13
lines changed

1 file changed

+9
-13
lines changed

docs/pipelines/process/container-phases.md

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: YAML pipeline container jobs
33
description: Learn about configuring and running Azure Pipelines YAML pipeline jobs inside containers.
44
ms.assetid: 8d35f78a-f386-4699-9280-7bd933de9e7b
55
ms.topic: conceptual
6-
ms.date: 08/18/2025
6+
ms.date: 08/19/2025
77
monikerRange: "<=azure-devops"
88
#customer intent: As an Azure Pipelines builder and tester, I want to learn about running pipeline jobs in containers so I can build and test pipelines in various agent configurations.
99
---
@@ -14,18 +14,16 @@ monikerRange: "<=azure-devops"
1414

1515
This article explains container jobs in Azure Pipelines. Containers are lightweight abstractions from the host operating system that provide all the necessary elements to run a job in a specific environment.
1616

17-
By default, Azure Pipelines [jobs](phases.md) run directly on [agents](../agents/agents.md) installed on host machines. Hosted agent jobs are convenient, require little initial setup or infrastructure maintenance, and are well-suited for basic projects. If you want more control over task context, you can define and run pipeline jobs in containers that have the exact versions of operating systems, tools, and dependencies you want.
17+
By default, Azure Pipelines [jobs](phases.md) run directly on [agents](../agents/agents.md) installed on host machines. Hosted agent jobs are convenient, require little initial setup or infrastructure maintenance, and are well-suited for basic projects. For more control over task context, you can define and run pipeline jobs in containers to get the exact versions of operating systems, tools, and dependencies you want.
1818

19-
For a container job, the agent first fetches and starts the container, and then runs each step of the job inside the container. If you need fine-grained control of individual build steps, you can use [step targets](tasks.md#step-target) to choose a container or host for each step.
19+
For a container job, the agent first fetches and starts the container, and then runs each step of the job inside the container. If you need finer-grained control of individual build steps, you can use [step targets](tasks.md#step-target) to choose a container or host for each step.
2020

2121
## Requirements for container jobs
2222

2323
- A YAML-based pipeline. Classic pipelines don't support container jobs.
2424
- A Windows or Ubuntu hosted agent. MacOS agents don't support containers. To use non-Ubuntu Linux agents, see [Nonglibc-based containers](#nonglibc-based-containers).
2525
- Docker installed on the agent, with permission to access the Docker daemon.
26-
27-
>[!NOTE]
28-
>Containers aren't supported when the agent is already running inside a container. You can't have nested containers.
26+
- Agent running directly on the host, not already inside a container. Nested containers aren't supported.
2927

3028
### [Linux](#tab/linux)
3129

@@ -36,9 +34,10 @@ Linux-based containers also have the following requirements:
3634
- No `ENTRYPOINT`. Containers with an `ENTRYPOINT` might not work, because [docker exec](https://docs.docker.com/reference/cli/docker/container/exec) expects the container to always be running.
3735
- `USER` provided with access to `groupadd` and other privileged commands without using `sudo`.
3836
- Ability to run Node.js, which the agent provides.
37+
>[!NOTE]
38+
>Node.js must be preinstalled for Linux containers on Windows hosts.
3939
40-
>[!NOTE]
41-
>Some stripped-down containers available on Docker Hub, especially containers based on Alpine Linux, don't satisfy these requirements. For more information, see [Nonglibc-based containers](#nonglibc-based-containers).
40+
Some stripped-down containers available on Docker Hub, especially containers based on Alpine Linux, don't satisfy these requirements. For more information, see [Nonglibc-based containers](#nonglibc-based-containers).
4241

4342
### [Windows](#tab/windows)
4443

@@ -52,9 +51,6 @@ Linux-based containers also have the following requirements:
5251
5352
---
5453

55-
>[!NOTE]
56-
>Node.js must be preinstalled for Linux containers on Windows hosts.
57-
5854
## Single job
5955

6056
The following example defines a Windows or Linux single-job container.
@@ -144,7 +140,7 @@ For more information, see the [docker container create](https://docs.docker.com/
144140

145141
## Reusable container definition
146142

147-
The following example defines the containers in the `resources` section, and then references them by their assigned aliases. The `jobs` keyword is used for clarity.
143+
The following YAML example defines the containers in the `resources` section, and then references them by their assigned aliases. The `jobs` keyword is used for clarity.
148144

149145
```yaml
150146
resources:
@@ -199,7 +195,7 @@ container:
199195
```
200196

201197
>[!NOTE]
202-
>Azure Pipelines can't set up a service connection for Amazon Elastic Container Registry (ECR), because Amazon ECR requires other client tools to convert Amazon Web Services (AWS) credentials to use for Docker authentication.
198+
>Azure Pipelines can't set up a service connection for Amazon Elastic Container Registry (ECR), because Amazon ECR requires other client tools to convert Amazon Web Services (AWS) credentials to be usable for Docker authentication.
203199

204200
## Nonglibc-based containers
205201

0 commit comments

Comments
 (0)