You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 427aadd
Browse filesBrowse the repository at this point in the historyBrowse files
Describe how Docker GPU sandboxes derive filesystem access from the
selected CDI devices, which CDI mounts are rejected, the NVIDIA MPS pipe
directory exception, missing additionalGids handling on Docker releases
before 29.5, and SELinux requirements for the projected spec
directories. Add cluster debugging entries for CDI projection,
admission, probe and restart failures, and document the CDI context in
the core, sandbox and Docker driver READMEs.
Signed-off-by: Evan Lezar <elezar@nvidia.com>
| Private named volumes | One carries the authenticated sandbox/supervisor channel. The other is mounted only into the supervisor and contains its JWT and private gateway credentials. |
112
113
| In-memory `/run/openshell-supervisor-ca` tmpfs | Holds only the public supervisor CA certificate and trust bundle without making all of `/run` writable. |
113
114
| CDI GPU request | Assigns the exact validated CDI devices requested by driver config or count-based selection. |
115
+
| CDI workload projection | For GPU sandboxes only, embeds selected device metadata in the protected boundary config and mounts Docker daemon CDI spec directories read-only into the workload. |
114
116
115
117
## Stop, Start, and Delete
116
118
@@ -124,6 +126,39 @@ Delete force-removes both containers, the driver-owned runtime volumes, and the
124
126
host-private runtime descriptor. Missing or altered descriptor and channel resources
125
127
fail closed; the driver does not run an older combined-supervisor layout.
126
128
129
+
## CDI GPU Metadata
130
+
131
+
Docker remains the source of truth for GPU injection. The driver selects opaque
132
+
CDI device IDs from `driver_config.cdi_devices` or the daemon's discovered CDI
133
+
inventory, then passes the same IDs to Docker with a CDI `DeviceRequest`.
134
+
135
+
For a GPU sandbox, the driver writes those IDs and projected CDI spec directory
136
+
paths to a versioned context in the protected workload boundary configuration.
137
+
It uses structured, read-only, non-recursive binds at `/.openshell/cdi-specs/<index>`.
138
+
The driver checks source existence on the daemon host using one temporary,
139
+
stopped container per directory and the prepared workload image. Each probe has
140
+
one read-only, private bind with source creation disabled. Successful probes are
141
+
removed with anonymous image-volume cleanup, including after provisioning
142
+
cancellation. Confirmed missing directories are omitted; other errors fail
143
+
provisioning. Results are cached for 30 seconds and refreshed on demand; observed
144
+
changes to daemon identity, configured directories, or GPU inventory invalidate
145
+
the cache. The resulting context records only available projections. The actual
146
+
sandbox is created once, and selected devices must still resolve from the
147
+
projected specs. No probe starts a process, creates missing directories, or
148
+
relabels host spec directories. Administrators must make the existing directories readable
149
+
under the host's SELinux policy when SELinux is enabled.
150
+
151
+
Whole spec directories are available to the trusted runtime, which resolves only
152
+
the selected devices. The mandatory Landlock baseline hides these projections
153
+
from agent processes, even when the authored policy grants a broad ancestor.
154
+
The sandbox runtime resolves the selected devices in that mount namespace before
155
+
it launches agent processes, derives Landlock paths from CDI `containerEdits`,
156
+
and warns when the runtime did not apply the spec's `additionalGids`. Containers with CDI context fail startup if their
157
+
selected devices cannot be resolved. Existing GPU containers without context
158
+
retain legacy baseline handling on restart. Admission checks persisted context
159
+
for existing containers and the creation context for new ones. Non-GPU sandboxes
160
+
receive no CDI context or spec mounts.
161
+
127
162
## Driver Config Mounts
128
163
129
164
The gateway forwards the `docker` block from `--driver-config-json`. Supported
Copy file name to clipboardExpand all lines: docs/how-it-works/sandboxes/runtimes.mdx
+25Lines changed: 25 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -121,6 +121,31 @@ Common options in `[openshell.drivers.docker]` are `socket_path`, `grpc_endpoint
121
121
122
122
Docker Desktop must have host networking enabled, and it cannot use Enhanced Container Isolation. Set `grpc_endpoint` when sandboxes cannot reach the gateway on host loopback. For GPU sandboxes, configure Docker CDI before starting the gateway.
0 commit comments