5e01a5dbf1
Closes #47111 is_container() only recognized Docker (/.dockerenv), Podman (/run/.containerenv), and docker/podman/lxc markers in /proc/1/cgroup. Under cgroup v2 (Kubernetes/k3s on containerd or CRI-O) /proc/1/cgroup collapses to a single "0::/" line with no runtime marker, so is_container() returned False on every containerd/CRI pod. That false negative bypassed container-aware behavior across the CLI. The most damaging case (reported): even after #46290 fixed detect_service_manager() to gate on _s6_running() alone, other is_container() call sites (profile home resolution, gateway behaviors, config, doctor) still misbehave on containerd. Broaden detection conservatively: - KUBERNETES_SERVICE_HOST env var (present in every k8s pod). - kubepods/containerd/crio markers in /proc/1/cgroup (cgroup v1 nested). - same markers in /proc/self/mountinfo as a cgroup-v2 fallback. Tests: 3 new (k8s env, kubepods cgroup, cgroup-v2-via-mountinfo) plus the existing negative case hardened to stub mountinfo + env; 108 constants + service_manager tests pass.