首页 > 编程语言 >C# 判断当前是否在容器中运行

C# 判断当前是否在容器中运行

时间:2024-05-27 23:10:54浏览次数:21  
标签:容器 判断 false stream C# System cgroup proc

可以在容器中执行命令,查看到信息

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

那么我们可以通过读取文件的方法,去分析是否在容器中运行。

代码如下

            /// <summary>
            /// 是否在容器中运行
            /// </summary>
            /// <returns></returns>
            private static async Task<bool> IsRunAtDocker()
            {
                //egrep  '^1:.+(docker|lxc|kubepods)' /proc/1/cgroup
                if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
                {
                    if (!System.IO.File.Exists("/proc/1/cgroup"))
                        return false;
                    try
                    {
                        bool has = false;
                        using (System.IO.StreamReader stream = System.IO.File.OpenText("/proc/1/cgroup"))
                        {
                            while (!stream.EndOfStream)
                            {
                                string s = await stream.ReadLineAsync();
                                string[] ss = s.Split(':');
                                if (s.Contains("name=systemd"))
                                {
                                    if (ss[2].Split('/').Contains("docker"))
                                    {
                                        has = true;
                                        break;
                                    }
                                }
                            }
                        }
                        return has;
                    }
                    catch { return false; }
                }
                else
                {
                    throw new PlatformNotSupportedException($"The current operating system is not supported({nameof(Machine)}).");
                }
            }
 

标签:容器,判断,false,stream,C#,System,cgroup,proc
From: https://www.cnblogs.com/webenh/p/18216822

相关文章

  • 你不知道的JavaScript(上中下合集) (作者 [美] Kyle Simpson 译者 赵望野 梁杰 单业 姜
    书:pan.baidu.com/s/199LHxxIlMixw3gYSY8tyPw?pwd=ywxg提取码:ywxg作用域与闭包:详细解释了词法作用域、动态作用域以及闭包的概念,展示了它们如何影响变量和函数的可访问性。函数作用域与块作用域:区分了函数作用域和块作用域,并解释了let和const等关键字如何引入块级作用域。变量......
  • 初识C语言——第二十九天
    数组本章重点1.一维数组的创建和初始化数组的创建注意事项:1.一维由低数组在内存中是连续存放的!2.随着数组下标的增长,地址是由低到高变化的2.二维数组的创建和初始化注意事项:1.二维数组在内存中也是连续存放的(一行内部是连续的,跨行也是连续的)#define_CR......
  • 每天五分钟深度学习框架pytorch:tensor张量的维度转换大全
    本文重点在深度学习中比较让人头疼的一点就是矩阵的维度,我们必须构建出符合神经网络维度的矩阵,只有将符合要求的矩阵放到神经网络中才可以运行神经网络,本节课程我们将学习以下tensor中维度的变化。view和shapeView和shape,这两个方法可以完成维度的变换操作,而且使用方法是一......
  • 在运行Yolov8时报错RuntimeError: torch.cat(): expected a non-empty list of Tensor
    这个错误还算是比较冷门当是又不是太容易发现,在报错出来的时候容易被最后面的提醒误解,我的报错提示如下:RuntimeErrorTraceback(mostrecentcalllast)InputIn[11],in<module>6model=YOLO('./yolov8.yaml').load('./yolov8n.pt......
  • 【简单介绍下容器是什么?】
    ......
  • python closure, first-class function, decorator
    闭包:closurefunctionhtml_tag(tag){ functionwrap_text(msg){  console.log('<'+tag+'>'+msg+'</'+tag+'>') } returnwrap_text}print_h1=html_tag('h1')print_h1('TestHea......
  • 【CV】视频图像背景分割MOG2,KNN,GMG
    当涉及背景分割器(BackgroundSubtractor)时,MixtureofGaussians(MOG2)、K-NearestNeighbors(KNN)和GeometricMultigid(GMG)是常用的算法。它们都用于从视频流中提取前景目标,并在计算机视觉和图像处理任务中发挥重要作用。MixtureofGaussians(MOG2):MOG2是一种基于高斯混合......
  • 利用ArcGIS Python批量拼接遥感影像(arcpy batch processing)
     本篇文章将说明如何利用ArcGIS10.1自带的PythonIDLE进行遥感影像的批量拼接与裁剪。1.运行环境:ArcGIS10.1(安装传送门)、PythonIDLE2.数据来源:地理空间数据云GDEMV230M分辨率数字高程数据3.解决问题:制作山西省的DEM影像如下图所示,以30M分辨率数字高程数据为例,影像......
  • 发布ClickOnce应用程序步骤与URL传参应用
    目录一、ClickOnce应用程序发布配置二、URL传参应用 一、ClickOnce应用程序发布配置签名-为ClickOnce清单签名→取消勾选签名-为程序集签名→取消勾选安全性-启用ClickOnce安全设置→勾选安全性-这是完全可信的应用程序→勾选发布-发布文件夹位置......
  • net core 建立webservice项目
    1、创建项目  2、通过NuGet安装SoapCore 3、创建服务接口及实现类本项目会创建2个webservice服务文件用于测试,所以创建了2个model类和2个接口文件。 Model类:[DataContract]publicclassFactoryModel{///<summary>///工厂号///<......