如何从Linux容器内部检测宿主机操作系统是否为Windows
如何从Linux Docker容器内部检测宿主机是否为Windows(LCow场景)
以下是几种可靠的检测方式,均能在容器内部直接执行:
方法1:检查/proc/version文件内容
Linux容器的/proc/version会包含宿主机内核的版本信息,在LCow(Linux容器运行于Windows)环境下,该文件会带有Microsoft关键词。执行以下命令即可判断:
if grep -q "Microsoft" /proc/version; then echo "宿主机是Windows" else echo "宿主机是Linux" fi
方法2:检查/proc/sys/kernel/osrelease值
该文件存储的内核发行版本信息,在Windows宿主机的LCow容器中同样会包含microsoft字符串:
if grep -qi "microsoft" /proc/sys/kernel/osrelease; then echo "宿主机是Windows" else echo "宿主机是Linux" fi
方法3:检查cgroup挂载路径
在Windows宿主机下,容器的cgroup挂载路径会带有Windows风格的标识,比如//./pipe/docker_engine相关内容。可以通过以下命令检测:
if grep -q "//./pipe" /proc/self/cgroup; then echo "宿主机是Windows" else echo "宿主机是Linux" fi
注意事项
- 以上方法均无需额外安装工具,依赖容器自带的基础命令(
grep、cat)即可执行。 /proc/version的检测方式兼容性最好,适用于大多数LCow版本。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

