refactor: adjust bpfd container runtime detection (#1686)

This commit is contained in:
ejose19 2021-08-11 02:07:11 -03:00 committed by GitHub
parent 4e218f2162
commit b22e993224
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 28 additions and 0 deletions

View File

@ -150,6 +150,12 @@ func GetContainerRuntime(tgid, pid int) ContainerRuntime {
return runtime
}
// Check for container specific files
runtime = detectContainerFiles()
if runtime != RuntimeNotFound {
return runtime
}
return RuntimeNotFound
}
@ -167,6 +173,28 @@ func getContainerRuntime(input string) ContainerRuntime {
return RuntimeNotFound
}
// Related implementation: https://github.com/systemd/systemd/blob/6604fb0207ee10e8dc05d67f6fe45de0b193b5c4/src/basic/virt.c#L523-L549
func detectContainerFiles() ContainerRuntime {
files := []struct {
runtime ContainerRuntime
location string
}{
// https://github.com/containers/podman/issues/6192
// https://github.com/containers/podman/issues/3586#issuecomment-661918679
{RuntimePodman, "/run/.containerenv"},
// https://github.com/moby/moby/issues/18355
{RuntimeDocker, "/.dockerenv"},
}
for i := range files {
if fileExists(files[i].location) {
return files[i].runtime
}
}
return RuntimeNotFound
}
// GetContainerID returns the container ID for a process if it's running in a container.
// If pid is less than one, it returns the container ID for "self".
func GetContainerID(tgid, pid int) string {