WebEnh

.net7 mvc jquery bootstrap json 学习中 第一次学PHP,正在研究中。自学进行时... ... 我的博客 https://enhweb.github.io/ 不错的皮肤:darkgreentrip,iMetro_HD
随笔 - 1079, 文章 - 1, 评论 - 75, 阅读 - 174万
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

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

Posted on   WebEnh  阅读(36)  评论(0编辑  收藏  举报

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

/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)}).");
                }
            }
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
历史上的今天:
2019-05-27 cshtml 中的 AppState = Context.Application 和 控制器中的 Application 也相等
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

了解更多