Skip to content

Commit 1d218a5

Browse files
committed
docs(gpu): explain CDI upgrade requirements
Signed-off-by: Evan Lezar <elezar@nvidia.com>
1 parent 555c132 commit 1d218a5

2 files changed

Lines changed: 10 additions & 0 deletions

File tree

‎docs/how-it-works/sandboxes/runtimes.mdx‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,14 @@ requirements from CDI specs before launching agent processes. Non-GPU Docker
136136
sandboxes do not receive the CDI context, spec mounts, or CDI-derived policy
137137
changes.
138138

139+
When upgrading from a version that created Docker GPU sandboxes without CDI spec
140+
projections, recreate those sandboxes. Starting an older container with resource
141+
admission enabled fails because its required projections are missing. Before
142+
creating a replacement, configure Docker to report only existing CDI spec
143+
directories. If a selected spec has ordinary writable mounts, list each regular
144+
file destination exactly in `filesystem_policy.read_write`; an ancestor grant
145+
does not satisfy this check, and writable directory mounts are rejected.
146+
139147
### Docker Corporate Proxy Egress
140148

141149
For proxy-required networks, the Docker driver accepts `https_proxy`,

‎skills/debug-openshell-cluster/SKILL.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,8 @@ Common findings:
321321

322322
- A CDI-enabled Docker workload fails during filesystem validation: inspect the destination paths in the selected CDI specs and their targets inside the workload image. Shared-library parent directories must not alias broad roots such as `/`, `/usr`, or `/dev`; device destinations must resolve to character or block devices, and ordinary writable mounts must be single files explicitly listed in policy `read_write`. Check both initial launch and later exec failures. CDI target validation, ruleset construction, and enforcement failures are fatal even with best-effort Landlock compatibility; unrelated authored paths retain their configured opening behavior; correct the spec or image paths rather than relaxing the policy.
323323

324+
- An existing Docker GPU sandbox fails restart with `CDI spec projection is missing`: recreate the sandbox so the driver can add the protected CDI spec projections. Containers created before CDI projection support do not have the required mounts.
325+
324326
- Docker rejects a CDI spec-directory bind: every directory reported in `docker info --format '{{json .CDISpecDirs}}'` must exist on the daemon host. OpenShell uses structured binds that reject missing sources and do not create directories or relabel existing ones. Configure Docker to report only existing CDI spec directories. On SELinux hosts, ensure the host policy permits containers to read them without automatic relabeling. The projections are private to the trusted runtime under `/.openshell/cdi-specs`; the mandatory baseline prevents agent access even with broad authored grants.
325327
- CDI spec projection admission fails: inspect the workload container's `HostConfig.DeviceRequests` and `Mounts`. Each daemon-discovered CDI spec directory must appear at its assigned `/.openshell/cdi-specs/<index>` destination as a read-only bind with private propagation and the expected host source. Missing, changed, duplicate, and additional unrelated bind mounts are rejected with admission enabled. Correct the projection or runtime configuration; do not disable resource admission for GPU workloads.
326328
- CDI writable mount validation fails despite omitted options or `ro` in the spec: OpenShell checks effective mount flags inside the workload. Original directory destinations are also checked for writable submounts. Ordinary writable destinations must be single regular files with exact entries in policy `read_write`; expanded shared-library parents are not treated as original directory mounts.

0 commit comments

Comments
 (0)