运维杂谈

如何检查程序是否在容器中运行的

2018-12-21  本文已影响0人  akka9

方法1: 判断 cgroup

egrep  '^1:.+(docker|lxc|kubepods)' /proc/1/cgroup

方法2: 检测 mount

 mount | grep '/ type' | egrep  '(overlay|aufs)' 

方法3: 查看硬盘: fdisk -l 容器输出为空,非容器有内容输出

fdisk -l

方法4: df -h 查看根分区的类型

df -h | egrep  '(overlay|aufs)' 

方法5: 判断 /.dockerenv 文件 (不太靠谱,文件可以删除或增加)

test -f /.dockerenv

方法6: 环境变量(不太靠谱,变量名可以覆盖)

方法7: 判断 PID 1 的进程名 (不靠谱:容器也可以用 systemd 启动)

cat /proc/1/status | head -1 

方法8: 判断内存大小(适用于限制了容器内存大小的容器)

cat /sys/fs/cgroup/memory/memory.max_usage_in_bytes         # 容器内存
expr $(cat /proc/meminfo | awk '/MemTotal/ {print $2}') \* 1024  # 主机内存

参考:
https://blog.csdn.net/hsluoyc/article/details/51075230
https://github.com/fabric8io-images/java/blob/master/images/centos/openjdk7/jre/run-java.sh

上一篇 下一篇

猜你喜欢

热点阅读