[alibaba/arthas]在Docker环境下,启动arthas失败

2024-07-17 924 views
9
环境信息
  • arthas-boot.jar 或者 as.sh 的版本: 3.6.7
  • Arthas 版本: arthas-all-3.6.7
  • 操作系统版本: docker
  • 目标进程的JVM版本: eclipse-temurin:8-jdk
  • 执行arthas-boot的版本: 3.6.7
重现问题的步骤
  1. 将最新的arthas-bin.zip包下载到openjdk目录下, 解压得到arthas-bin目录及文件
  2. 在openjdk文件夹下添加Dockerfile文件内容如下
    FROM eclipse-temurin:8-jdk
    COPY ./arthas-bin /arthas
  3. 构建镜像docker build -t aaa .
  4. 运行
    > docker run --rm -it aaa bash
    > cd /arthas
    > root@acc80c06df68:/arthas# java -jar arthas-boot.jar 
    [INFO] JAVA_HOME: /opt/java/openjdk/jre
    [INFO] arthas-boot version: 3.6.7
    [INFO] Can not find java process. Try to run `jps` command lists the instrumented Java HotSpot VMs on the target system.
    Please select an available pid.
    > root@acc80c06df68:/arthas# echo $JAVA_HOME
    /opt/java/openjdk
    > root@acc80c06df68:/arthas# echo $PATH
    /opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
期望的结果

按理说arthas应该跑起来

实际运行的结果

JAVA_HOME获取错误

回答

2

jre环境没有jdk这些工具啊,jps也是jdk的工具之一 只有把jps,tools这些拷贝进去才行 我也是才接触 不知道有哪些是被arthas调用的

0

按理说官方的jdk镜像是不会有问题的. 直接调用jps等工具可以直接获取.

6

也可以手动ps -ef查看 pid 然后 java -jar arthas-boot.jar ${pid} 来启动

2

终于找到原因了, 必须先在容器中启动java程序, 再运行arthas 就能正常了