如何检查程序是否在容器中运行的
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