背景
项目需要隔离部署,如果在docker环境需要使用一些特殊的配置,之前没有太好的判别方法,现在总结一下。
V1 使用/.dockerenv
判断
如果是Docker容器内,根目录会生成一个可执行的/.dockerenv
文件,判断此文件是否存在可以基本断定是否运行内容器内,注意是“基本”,极少数的发行版或者某些定制化较高的系统,可能会不存在此文件。
|
|
V2 使用cgroup
信息进行判断
Docker在Xnix下虚拟环境,使用了cgroup,容器内的group信息与物理机会有本质不同,可以根据Docker内特殊化的环境信息进行判断,这也是目前最靠谱的方案。
正常情况下物理机的cgroup:
|
|
Docker内的cgroup(例子):
|
|
判断响应内容即可,一般情况下,主要看name
& devices
|
|
V3 拓展
如果需要当前协程的父进程信息,会对我们定位很多关键信息起到很大的帮助
|
|
EOF