Skip to content

Commit

Permalink
improve container detection using container specific files
Browse files Browse the repository at this point in the history
  • Loading branch information
ejose19 committed May 7, 2021
1 parent c12d8cd commit 27a568d
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions proc/proc.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand All @@ -167,6 +173,23 @@ 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 := map[ContainerRuntime]string{}
// https://github.com/containers/podman/issues/3586#issuecomment-661918679
files[RuntimePodman] = "/run/.containerenv"
// https://github.com/moby/moby/issues/18355
files[RuntimeDocker] = "/.dockerenv"

for runtime, file := range files {
if fileExists(file) {
return 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 {
Expand Down

0 comments on commit 27a568d

Please sign in to comment.