You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器复制JMeter日志到主机提示文件不存在问题求助

问题原因

你在docker run命令里把主机的/home/jenkins/workspace/test_feature_test目录挂载覆盖了容器内的/usr/share/jmeter/bin目录。容器启动后,原容器/usr/share/jmeter/bin下的文件会被主机挂载目录的内容完全替代,导致原本应该生成在该目录的JMeter日志找不到。其他目录未被挂载覆盖,所以能正常复制文件。

解决方案

提供两种可行的处理方式:

方式1:挂载子目录避免覆盖bin目录

不要直接挂载到容器的bin目录,而是在容器/usr/share/jmeter/bin下创建一个专门的日志子目录,将主机目录挂载到这个子目录:
修改Jenkinsfile中的docker run命令:

docker run -v /home/jenkins/workspace/test_feature_test:/usr/share/jmeter/bin/logs mycontainer

同时调整script.sh脚本,让JMeter把日志输出到/usr/share/jmeter/bin/logs目录。这样容器原bin目录的内容不会被覆盖,日志会直接生成在挂载的子目录中,主机可直接获取。

方式2:测试完成后复制日志(不挂载覆盖)

如果不想修改挂载路径和脚本,可先让容器正常运行完成测试,再用docker cp命令提取日志:
修改Jenkinsfile的步骤:

stage('Run Test') {
    steps {                     
        sh 'docker build -t mycontainer . \
                    && docker run --name temp-jmeter-container mycontainer \
                    && docker cp temp-jmeter-container:/usr/share/jmeter/bin/[你的日志文件名] /home/jenkins/workspace/test_feature_test/ \
                    && docker rm temp-jmeter-container'             
    }
}

这里给容器指定临时名称temp-jmeter-container,测试结束后用docker cp把日志复制到主机,最后删除临时容器。这种方式不会覆盖容器bin目录,日志能正常生成并被提取。

额外检查点
  • 确认script.sh脚本中JMeter的日志输出路径,确保日志确实会生成在/usr/share/jmeter/bin(或修改后的路径)下。
  • 可手动启动容器并进入内部,查看/usr/share/jmeter/bin目录内容,核实日志是否存在,排查日志生成路径是否正确。

内容的提问来源于stack exchange,提问作者esquare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 14:07:10