Skip to content

docs: self-hosted-runners reference reads DinD as optional for ARC — should state it's required #44569

Description

@lpcox

Summary

Customer feedback indicates that the self-hosted runners reference doc (docs/src/content/docs/reference/self-hosted-runners.md) reads DinD as a conditional/optional ARC configuration rather than a hard requirement. The new ARC DinD guide is clear on this, but the reference doc needs updates to match.

Gaps

1. Docker requirements section reads DinD as one option among peers (lines 170-174)

The three bullet points (Unix socket, Docker group, ARC/Kubernetes) are presented as peer-level items. The ARC bullet says:

If using actions-runner-controller with Docker-in-Docker (dind), the dind sidecar must share the Docker socket via an emptyDir volume.

This reads as "if you happen to use DinD" — not "DinD is the only supported mode for ARC." A reader could conclude that ARC with Kubernetes container mode also works.

Fix: State explicitly that DinD is required for ARC and that containerMode.type="kubernetes" is not supported.

2. ARC section reads DinD as an optional pattern (lines 241-260)

The heading "Docker-in-Docker (dind) sidecar" and the text "The standard ARC dind pattern with a shared emptyDir for the Docker socket is supported" describe DinD as one supported option, not the only option.

Fix: Lead with "GitHub Copilot coding agent requires DinD mode on ARC" and note that Kubernetes container mode is unsupported.

3. No cross-reference from Docker requirements to the ARC guide

The Docker section mentions ARC but doesn't link to the new ARC DinD guide or the ARC section later on the same page.

Fix: Add a cross-reference link.

4. ARC section doesn't mention runner.topology: arc-dind

The ARC section (lines 241-260) discusses pod security and socket sharing but never mentions the frontmatter setting that's required for compiled workflows to enable ARC DinD handling. The earlier "ARC with Docker-in-Docker (DinD)" section (line 20) does mention it, but the bottom ARC section doesn't, which is confusing since they cover related topics.

Fix: Either consolidate the two ARC sections or add a cross-reference and mention runner.topology: arc-dind in the bottom section.

5. "privileged: true on both the dind sidecar and the runner container" is misleading (line 255)

The text says both containers need privileged: true. In practice:

  • The DinD sidecar needs privileged mode (for dockerd)
  • The runner container needs NET_ADMIN capability (for iptables), not full privileged mode

Saying both need privileged: true could lead operators to over-privilege the runner container.

Fix: Clarify that the runner container needs NET_ADMIN capability, not privileged: true. The DinD sidecar needs privileged mode.

Context

  • Customer feedback: the wording reads as conditional rather than stating DinD as a hard requirement
  • The new ARC DinD guide is clear — the reference doc should match
  • Related: the top "ARC with Docker-in-Docker" section (line 20) was updated in the guide PR but the bottom "ARC (Actions Runner Controller)" section (line 241) was not

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions