TT Bigdata TT Bigdata
首页
GitHub (opens new window)
JaneTTR

JaneTTR

数据酿造智慧,每一滴都是沉淀!
  • 开发环境

  • Ambari 编译

  • Bigtop 编译

  • Ambari 源码编译

  • 前端开发

  • 后端开发

  • 官方组件编译

  • 扩展组件编译

    • Sqoop编译

    • Ranger编译

    • Phoenix编译

    • Dolphinscheduler编译

    • Doris编译

    • Cloudbeaver编译

    • Atlas编译

    • Superset编译

    • Celeborn编译

    • Ozone编译

    • Impala编译

      • version-4.4.1

        • Impala_4.4.1 编译
        • [O] Impala 版本适配改造(一)
        • [O] Impala 版本适配改造(二)
        • [O] Impala 版本适配改造(三)
        • [B] Impala 版本适配改造(一)
        • [B] Impala 版本适配改造(二)
        • [B] Impala 版本适配改造(三)
        • [B] Impala 版本适配改造(四)
          • 第三步:完善 Docker 环境检测兼容
            • 技术实现与变更点说明
            • 图片说明
          • 补丁文件与内容
    • Trino编译

    • Paimon编译

    • Hudi编译

  • 源码编译
  • 扩展组件编译
  • Impala编译
  • version-4.4.1
JaneTTR
2025-05-06
目录
第三步:完善 Docker 环境检测兼容
技术实现与变更点说明
图片说明
补丁文件与内容

[B] Impala 版本适配改造(四)

# 第三步:完善 Docker 环境检测兼容

在大数据环境迁移和自动化测试过程中,如何精准判断当前进程是否运行于 Docker 容器内,对启动脚本的兼容性极为关键。许多开源组件在新版容器平台或 CI 环境下,原有的 cgroup 检查方式已经不再可靠,极易出现判断失效或漏检。

此次补丁补全了多种主流 Docker 检测方法,极大提升了脚本的通用性和健壮性多兼容 。

# 技术实现与变更点说明

提示

常见的 Docker 检测仅依赖 /proc/1/cgroup,但部分精简版镜像、K8s 容器或使用 systemd 启动时,cgroup 路径或文件内容并不固定,因此 本次脚本引入如下多重判定:

  • 检查 /proc/1/cgroup 文件内容中是否含有 docker 关键词
  • 检查根目录下是否存在 /.dockerenv 文件(部分 Docker 运行时特有)
  • 补充判定 /proc/self/cgroup 内容中是否包含 docker,避免父子进程切换遗漏

这套写法适配主流 Linux 容器环境,也适用于 K8s、CI/CD 场景,减少环境漂移导致的脚本误判推荐实践。

# 图片说明

下图可见,多种环境下 /proc/1/cgroup 与 /.dockerenv 是否存在和内容对比,清晰展示了脚本兼容逻辑:

docker检测多方式对比

笔记

实际生产中,如遇特殊分发或混合环境,建议结合自己实际运行时容器类型,适当补充判定条件,保证启动流程可靠。

# 补丁文件与内容

  • 位置: bigtop-packages/src/common/impala/patch2-FIXED-DOCKER-CHECKED.diff

  • 内容如下:


Subject: [PATCH] fixed: docker checked
---
Index: bin/bootstrap_system.sh
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/bin/bootstrap_system.sh b/bin/bootstrap_system.sh
--- a/bin/bootstrap_system.sh	(revision fd57ec623193968cba765305448ea07cd7e97e20)
+++ b/bin/bootstrap_system.sh	(date 1749625395791)
@@ -128,9 +128,12 @@
     exit 1
   fi
 fi
-if grep docker /proc/1/cgroup; then
-  IN_DOCKER=true
-  echo "Identified we are running inside of Docker."
+# 多方法检测Docker环境
+if grep -q docker /proc/1/cgroup || [ -f /.dockerenv ] || \
+   { [[ -f /proc/self/cgroup ]] && grep -q docker /proc/self/cgroup; }
+then
+    IN_DOCKER=true
+    echo "Identified we are running inside of Docker."
 fi

 # Helper function to execute following command only on Ubuntu


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
29
#Impala#Bigtop#源码编译#性能优化
[B] Impala 版本适配改造(三)
Trino_474 编译

← [B] Impala 版本适配改造(三) Trino_474 编译→

最近更新
01
当前版本 2026/08
08-29
02
把 Ambari Server HA 稳稳地跑起来
08-17
03
从一次启用操作追到主备就绪
08-17
更多文章>
Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式