[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:/
我可以使用上面的任何标志来确定此进程是否在容器内运行?
[Updated2]:我还注意到 Determining if a process running 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
原文由 harryz 发布,翻译遵循 CC BY-SA 4.0 许可协议
要检查 Docker 容器内部是否在 Docker 容器中,可以通过
/proc/1/cgroup
完成。正如 这篇文章 所建议的那样,您可以执行以下操作:在 docker 容器外,— 中的所有条目都在
/
/proc/1/cgroup
结束,您可以在此处看到:在 Docker 容器中,一些控制组将属于 Docker(或 LXC):