跳到內容

Docker 效能分析

專業版功能

Docker 效能分析需要 專業版授權

透過自動探索,分析執行在本機 Docker 容器中的 Java 應用程式。


GalataJ 自動探索在您本機電腦的 Docker 容器中執行的 Java 應用程式。

  1. 使用 Java 應用程式啟動您的 Docker 容器
  2. 在 IDE 中開啟 Profiler 面板
  3. 點擊重新整理 — Docker 容器將出現在 JVM 清單中
  4. 選擇容器並開始分析

無需設定。 GalataJ 自動處理連線。

建議使用 JDK 以實現自動連線

如果您的容器使用 JDK 映像,GalataJ 無需任何額外設定即可自動連線。如果您的容器使用 JRE 或不支援連線的 JDK,您仍然可以透過 -javaagent 方式進行分析。請參閱下方的替代方案:使用 -javaagent


GalataJ 可以找到執行在以下環境中的 Java 程序:

  • Docker Desktop(Windows/macOS)
  • Docker Engine(Linux)
  • Docker Compose 專案

只要容器在您的本機電腦上執行,GalataJ 就可以對其進行分析。


在 JVM 清單中,Docker 容器顯示:

  • 容器名稱 — 您給容器取的名稱
  • 映像名稱 — 正在使用的 Docker 映像
  • 容器 ID — 用於識別的短 ID

如果自動連線不起作用——例如,您的容器使用 JRE 映像或不支援執行時期連線的 JDK——您可以在啟動時使用 -javaagent 載入分析器代理。此方法適用於任何 Java 映像,包括 JRE

選擇以下選項之一:

將以下內容新增到您的服務定義中——無需修改 Dockerfile:

services:
my-app:
# ... 您現有的設定 ...
volumes:
- ~/.galataj/agent/agent.jar:/opt/galataj-agent.jar:ro
environment:
- JAVA_TOOL_OPTIONS=-javaagent:/opt/galataj-agent.jar
- GALATAJ_PACKAGE=com.mycompany.myapp
extra_hosts:
- "host.docker.internal:host-gateway"

然後重新啟動您的服務:

Terminal window
docker compose up

將代理 JAR 複製到您的專案目錄:

Terminal window
cp ~/.galataj/agent/agent.jar ./agent.jar

然後在 Dockerfile 的 ENTRYPOINT 之前新增以下行:

COPY agent.jar /opt/galataj-agent.jar
ENV JAVA_TOOL_OPTIONS="-javaagent:/opt/galataj-agent.jar"
ENV GALATAJ_PACKAGE=com.mycompany.myapp

無需修改檔案——直接傳遞卷掛載和環境變數:

Terminal window
docker run \
-v ~/.galataj/agent/agent.jar:/opt/galataj-agent.jar:ro \
-e JAVA_TOOL_OPTIONS="-javaagent:/opt/galataj-agent.jar" \
-e GALATAJ_PACKAGE=com.mycompany.myapp \
--add-host=host.docker.internal:host-gateway \
your-image
  • com.mycompany.myapp 替換為您應用程式的基礎套件(例如,包含 @SpringBootApplication 類別的套件)。
  • Linux 上,extra_hosts(Compose)或 --add-host(docker run)參數是必要的,以便容器可以存取主機。上述範例已包含此設定。
  • 使用 IDE 精靈時,產生的程式碼片段已自動填入正確的套件名稱。

僅限本機

GalataJ 只能分析在您本機電腦上執行的 Docker 容器。目前不支援遠端 Docker 主機(SSH、遠端 Docker API)。


  1. 確保容器正在執行(未停止)
  2. 在分析器面板中點擊重新整理
  3. 驗證容器內有 Java 程序
  4. 執行 Health Check 以確保 GalataJ 正常運作
  1. 確保您已啟用 專業版授權
  2. 檢查 Docker 是否在您的電腦上執行
  3. 嘗試重新啟動您的 IDE

附加失敗:jdk.attach 不可用

如果您看到如下錯誤:

  • “jdk.attach module not available in container”
  • “The container image must include JDK (not just JRE)”
  • “NoClassDefFoundError: com/sun/tools/attach/AttachNotSupportedException”

說明容器使用的是 JRE 映像或不支援連線的 JDK。

方案 A — 切換到 JDK 映像:

# 之前(自動連線失敗)
FROM eclipse-temurin:17-jre
# 之後(與 GalataJ 相容)
FROM eclipse-temurin:17-jdk

建議的 JDK 映像:eclipse-temurin:17-jdkamazoncorretto:17azul/zulu-openjdk:17

重新建置映像並再次執行容器,然後開始分析。

方案 B — 改用 -javaagent:

如果無法切換到 JDK 映像,請使用 -javaagent 方式,該方式適用於任何 Java 映像,包括 JRE。請參閱上方的替代方案:使用 -javaagent


升級到專業版

獲取 Docker 分析及更多功能

升級 →

工作階段歷史

隨時間比較容器效能

了解更多 →