很多情况会报以上该问题,我碰到的比较特殊,所以专门做个分享。

首先描述下出现以上该问题的背景:

项目引入skywalking,那么启动时就需要多加入相关的-javaagent参数等,然后项目已经采用了docker的方式部署,Dockerfile文件信息大致如下:

# 该镜像需要依赖的基础镜像
FROM java:8
# 将当前目录下的jar包复制到docker容器的/目录下
ADD demo-1.0.0.jar /demo-1.0.0.jar
# 声明服务运行在1000端口
EXPOSE 1000
# 指定docker容器启动时运行jar包
ENTRYPOINT ["java", "-jar","/demo-1.0.0.jar"]
# 指定维护者的名字
MAINTAINER jiejie

此时我先是上传了skywalking的agent包,作为skywalking的探针,然后修改了ENTRYPOINT的一些参数,具体如下:

# 该镜像需要依赖的基础镜像
FROM java:8
# 将当前目录下的jar包复制到docker容器的/目录下
ADD demo-1.0.0.jar /demo-1.0.0.jar
# 声明服务运行在1000端口
EXPOSE 1000
# 指定docker容器启动时运行jar包
ENTRYPOINT ["java","-javaagent:opt/agent/skywalking-agent.jar","-Dskywalking.agent.service_name=hello","-Dskywalking.collector.backend_service=localhost:2000", "-jar","/demo-1.0.0.jar"]
# 指定维护者的名字
MAINTAINER jiejie

此时加上了skywalking-agent.jar的绝对路径,以及服务名和skywalking服务端的地址,然后通过jenkins打包部署,发现会报如下错误:
在这里插入图片描述
之后不管我skywalking-agent.jar路径再怎么改,一直都会出现这个错误,原因分析是权限不足,所以此时我在linux中把skywalking-agent.jar的相关文件权限都做了提高,还是没用,因此初步猜测是docker执行宿主机中文件时,权限不足导致的,我不想修改docker权限,因为不够了解,所以怕会引起安全问题,所以我再次梳理了下之前写Dockerfile文件的思路,决定将当前目录下的jar包复制到docker容器的/目录的同时也把skywalking-agent.jar的相关文件夹也复制到docker容器的/目录下,初步猜测,这样就不会引起权限不足的情况,测试过后,可行,发布成功。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐