fix(cli): improve container detection when cgroupns=private #15156
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #12721
If a container in docker is started with
--cgroupns=private
(which is the default behaviour in docker) then/proc/1/cgroup
has the following content:If a container in docker is started with
--cgroupns=host
then/proc/1/cgroup
has the following content (hash will vary):Currently we are determining if a host is containerized by assuming the second scenario. This means the existing behaviour of sniffing
/proc/1/cgroup
is not always sufficient for checking if a host is containerized.According to the cgroups(7) man-page there exists a
cgroup.type
file in a nonroot cgroup. This exists in Linux versions after4.14
.This means we can check for the existence of
/sys/fs/cgroup/cgroup.type
to see if we are in a container or not.