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