linux 检测脚本是否在docker容器内运行[重复]

ijxebb2r  于 2023-06-21  发布在  Linux
关注(0)|答案(2)|浏览(125)

此问题已在此处有答案

How to determine if a process runs inside lxc/Docker?(19回答)
12天前关闭
脚本如何检测它是否在容器中运行?

#!/bin/sh
if [ ... ]; then                 # ?
  echo 'running in container'
else
  echo 'running on host'
fi
nuypyhwy

nuypyhwy1#

以下是bash的一种方式:

#!/bin/bash

in_docker(){
    local cgroup=/proc/self/cgroup
    test -f $cgroup && [[ "$(<$cgroup)" = *:cpuset:/docker/* ]]
}

if in_docker; then
  echo 'running in container'
else
  echo 'running on host'
fi

如果容器中没有bash,则需要转换为sh语法。

5anewei6

5anewei62#

/.dockerenv文件始终存在于docker容器中,所以我检查了一下:

#!/bin/sh
if [ -f /.dockerenv ]; then
  echo 'running in container'
else
  echo 'running on host'
fi

但请注意,该文件是旧版Docker设计的产物,可能会在未来的Docker版本中删除。所以这是一个变通方案,而不是解决方案。

相关问题