在Docker中安装GCP Profiler代理时遇到问题

时间:2019-12-06 15:29:50

标签: docker google-cloud-platform stackdriver google-cloud-profiler

我正在尝试为我的在GKE中运行的应用安装GCP Profiler代理,请按照此处的说明进行操作:https://cloud.google.com/profiler/docs/profiling-java

我无法克服此错误。有人可以帮忙吗?

  

在以下位置找不到代理库/opt/cprof/profiler_java_agent.so   绝对路径,有错误:重新定位错误   /opt/cprof/profiler_java_agent.so:__pthread_key_create:initial-exec   TLS解析为动态定义   /opt/cprof/profiler_java_agent.so

这是Dockerfile

FROM openjdk:8-jdk-alpine
RUN apk update && apk add --no-cache gcompat
RUN apk update && apk add --no-cache libc6-compat

WORKDIR /app

# The application's jar file
ARG JAR_FILE=target/example-svc-*.jar

# Add the application's jar to the container
ADD ${JAR_FILE} example-svc.jar

EXPOSE 5050

RUN mkdir -p /opt/cprof && \
  wget -q -O- https://storage.googleapis.com/cloud-profiler/java/latest/profiler_java_agent.tar.gz \
  | tar xzv -C /opt/cprof

ENTRYPOINT ["java", \
    "-agentpath:/opt/cprof/profiler_java_agent.so=-cprof_service=example-svc,-cprof_service_version=0.0.1-SNAPSHOT", \
    "-jar", "/app/example-svc.jar"]

1 个答案:

答案 0 :(得分:2)

问题似乎是您正在使用的容器映像的基本版本。查看您的Dockerfile,您将从以下位置开始:

openjdk:8-jdk-alpine

深入研究此文档,我们发现:

  

要注意的主要警告是它确实使用musl libc而不是glibc   和朋友,因此某些软件可能会遇到问题,具体取决于   他们的libc要求的深度。

(参考:openjdk

现在,如果我们查看在here中找到的Google文档,就会发现已定义以下要求:

  

支持的操作系统:

     
      
  • 使用glibc实现标准C库的Linux版本。
  •   

...,这似乎是一个冲突。请尝试使用不基于alpine的openjdk映像的备用版本。