shell – 如何检查进程是否在docker容器内运行

前端之家收集整理的这篇文章主要介绍了shell – 如何检查进程是否在docker容器内运行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
[Updated1]我有一个shell将在一些函数中改变TCP内核参数,但现在我需要使这个shell在Docker容器中运行,这意味着shell需要知道它运行在一个容器内并停止配置内核。

现在我不知道如何实现,这里是容器内的/ proc / self / cgroup的内容

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

上面的任何标记可以用来弄清楚这个进程是否在容器内运行?

[已更新2]:我也注意到了Determining if a process runs inside 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

如果您在Docker容器内部,或者通过/ proc / 1 / cgroup可以完成Docker容器的检查。由于 this post建议您可以执行以下操作:

在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:/

猜你在找的Bash相关文章