一尘不染

如何检查进程是否在Docker容器中运行

docker

[Updated1]我有一个外壳,它将在某些功能中更改TCP内核参数,但是现在我需要使该外壳在Docker容器中运行,这意味着,该外壳需要知道它在容器内运行并停止配置内核。

现在我不确定如何实现,这是/proc/self/cgroup容器内部的内容:

9:hugetlb:/
8:perf_event:/
7:blkio:/
6:freezer:/
5:devices:/
4:memory:/
3:cpuacct:/
2:cpu:/docker/25ef774c390558ad8c4e9a8590b6a1956231aae404d6a7aba4dde320ff569b8b
1:cpuset:/

我可以使用上面的任何标志来确定此过程是否在容器内运行吗?

[Updated2]:我还注意到确定进程是否在lxc/Docker中运行,但在这种情况下似乎不起作用/proc/1/cgroup,我容器中的内容为:

8:perf_event:/
7:blkio:/
6:freezer:/
5:devices:/
4:memory:/
3:cpuacct:/
2:cpu:/docker/25ef774c390558ad8c4e9a8590b6a1956231aae404d6a7aba4dde320ff569b8b
1:cpuset:/

否/ lxc / containerid


阅读 1158

收藏
2020-06-17

共1个答案

一尘不染

要检查Docker容器内部是否可以在Docker容器中,可以通过进行/proc/1/cgroup。正如这篇文章所建议的,您可以执行以下操作:

在docker容器之外,所有条目都以/proc/1/cgroup结尾结尾,/如下所示:

vagrant@ubuntu-13:~$ cat /proc/1/cgroup
11:name=systemd:/
10:hugetlb:/
9:perf_event:/
8:blkio:/
7:freezer:/
6:devices:/
5:memory:/
4:cpuacct:/
3:cpu:/
2:cpuset:/

在Docker容器内,某些控制组将属于Docker(或LXC):

vagrant@ubuntu-13:~$ docker run busybox cat /proc/1/cgroup
11:name=systemd:/
10:hugetlb:/
9:perf_event:/
8:blkio:/
7:freezer:/
6:devices:/docker/3601745b3bd54d9780436faa5f0e4f72bb46231663bb99a6bb892764917832c2
5:memory:/
4:cpuacct:/
3:cpu:/docker/3601745b3bd54d9780436faa5f0e4f72bb46231663bb99a6bb892764917832c2
2:cpuset:/
2020-06-17