fix(docker): gate resource limit flags on cgroup controller availability (#54516)
On hosts where the cgroup v2 cpu/memory/pids controllers are not delegated to the docker/podman process (unprivileged Proxmox LXCs, some rootless and nested setups), --pids-limit/--cpus/--memory cause every container start to fail with OCI runtime error / exit 126, breaking terminal + execute_code. - Add _cgroup_limits_available(image): one-shot, host-wide cached probe that spawns a throwaway container from the sandbox image itself (sleep 0) with all three flags together, mirroring the existing _storage_opt_supported probe-and-degrade pattern. - Remove --pids-limit from static _BASE_SECURITY_ARGS; apply it (default 256 via _DEFAULT_PIDS_LIMIT) in resource_args gated on the probe. - Gate --cpus and --memory on the same probe. Behavior unchanged on cgroup-capable hosts; graceful degradation with a one-time warning where controllers aren't delegated. Fixes #6568. (cherry picked from commit c933880b7ee2ce4d1167e0f89caa2d233db5639f) Co-authored-by: angelos <angelos@oikos.lan.home.malaiwah.com>
This commit is contained in:
parent
10043c6d0c
commit
7cfa2fa13f
3 changed files with 169 additions and 5 deletions
|
|
@ -11,7 +11,13 @@ def _mock_subprocess_run(monkeypatch):
|
|||
"""Mock subprocess.run to intercept docker run -d and docker version calls.
|
||||
|
||||
Returns a list of captured (cmd, kwargs) tuples for inspection.
|
||||
|
||||
Pre-seeds the cgroup-limit probe cache to ``True`` so the throwaway probe
|
||||
container (a ``docker run ... sleep 0``) does not run and pollute the
|
||||
captured call list — these tests inspect the real sandbox-start ``run``.
|
||||
Tests that exercise the probe itself live in test_docker_cgroup_limits.py.
|
||||
"""
|
||||
docker_env._cgroup_limits_ok = True
|
||||
calls = []
|
||||
|
||||
def _run(cmd, **kwargs):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue