running_in_container/
lib.rs1use std::fs::File;
2use std::io::{self, prelude::*, BufReader};
3
4fn run(path: &str) -> Result<bool, io::Error> {
5 let file = File::open(path)?;
6 let reader = BufReader::new(file);
7
8 for line in reader.lines() {
9 if line?.contains("/docker/") {
10 return Ok(true);
11 }
12 }
13
14 Ok(false)
15}
16
17pub fn is_inside_docker() -> Result<bool, io::Error> {
18 run("/proc/1/cgroup")
19}
20
21#[test]
22fn test_detects_host_when_typical() {
23 let expected = false;
24
25 let actual = run("test/proc_1_cgroup.host").unwrap();
26
27 assert_eq!(expected, actual);
28}
29
30#[test]
31fn test_detects_docker_when_typical() {
32 let expected = true;
33
34 let actual = run("test/proc_1_cgroup.docker").unwrap();
35
36 assert_eq!(expected, actual);
37}