Docker:启动容器进程导致“失败”;执行官:\"-n\";:在$PATH";中找不到可执行文件:未知的

Docker:启动容器进程导致“失败”;执行官:\"-n\";:在$PATH";中找不到可执行文件:未知的,docker,jmeter,dockerfile,Docker,Jmeter,Dockerfile,在docker映像(run)上启动命令时,出现以下错误: C:\Program Files\Docker\Docker\resources\bin\docker.exe: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"-n\": executable file not found in $PATH":

在docker映像(run)上启动命令时,出现以下错误:

C:\Program Files\Docker\Docker\resources\bin\docker.exe: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"-n\": executable file not found in $PATH": unknown.
该图像是我自己创建的Jmeter图像:

FROM        hauptmedia/java:oracle-java8

MAINTAINER  maisie

ENV         JMETER_VERSION  5.2.1
ENV         JMETER_HOME /opt/jmeter
ENV         JMETER_DOWNLOAD_URL https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-${JMETER_VERSION}.tgz

RUN         apt-get clean
RUN         apt-get update
RUN         apt-get -y install ca-certificates              
RUN         mkdir -p ${JMETER_HOME}                         
RUN         cd ${JMETER_HOME}                           
RUN         wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.2.1.tgz
RUN         tar -xvzf apache-jmeter-5.2.1.tgz   
RUN         rm apache-jmeter-5.2.1.tgz          
我正在启动的命令是:

#!/bin/bash

export volume_path=$(pwd)

export jmeter_path="/opt/apache-jmeter-5.2.1/bin"

docker run --volume ${volume_path}:${jmeter_path} my/jmeter -n -t ${jmeter_path}/TEST.jmx -l ${jmeter_path}/res.jtl
我真的找不到我问题的答案


提前感谢您的帮助。

docker run命令的一般形式是

docker run [docker options] <image name> [command]
在Dockerfile中如何安装软件也会有问题。(您不需要使用
docker run--volume
来提供映像中已经存在的软件。)每个
run
命令都在新环境中的新shell中启动(甚至在新容器中),因此在自己的行中说例如
run cd…
没有任何作用。您需要使用Dockerfile指令,如
WORKDIR
ENV
来更改环境。
jmeter
命令不在标准二进制目录中,因此运行它时也会遇到一些问题。我可能会改变:

#。。。
#在单个命令中运行所有APT命令
#(如果包列表更改,层缓存可能会中断安装)
跑去洗干净\
&&apt获取更新\
&&apt获取-y安装ca证书
#下载并解压缩JMeter tar文件
#这都是在一个运行命令中完成的,所以
#(1)生效时的“cd”具有(临时)效力,并且
#(2)tar文件未提交到“rm”之前的图像
运行cd/opt\
&&wget${JMETER_DOWNLOAD_URL}\
&&tar xzf apache jmeter-${jmeter_VERSION}.tgz\
&&rmapachejmeter-${jmeter_VERSION}.tgz
#在普通bin目录中创建指向jmeter进程的符号链接
运行ln-s/opt/apachejmeter-${jmeter_VERSION}/bin/jmeter/usr/local/bin
#指示要运行的默认命令
CMD jmeter
最后,关于在哪里存储数据文件还有一些问题。最好将数据存储在应用程序目录之外;在Docker上下文中,使用像
/data
这样的短(如果是非标准的)目录路径非常常见。请记住,
docker run
命令中的任何文件路径都是指容器中的路径,但您需要一个
docker run-v
bind mount选项(您原来的
--卷
是等效的)使其在主机上可见。这将给您一个最终命令,如:

docker run-v“$PWD:/data”atos/jmeter\
jmeter-n-t/data/TEST.jmx-l/data/res.jtl

您想在容器内运行什么命令?@BMitch我想运行Jmeter命令,使用主机上的文件(TEST.jmx)在非GUI模式下运行Jmeter…谢谢!!但我有以下错误:发生错误:文件/C:/Program Files/Git/data/TEST.jmx不存在或无法打开。。。我已经创建了这个文件,我真的不明白为什么会出现这个问题……这是git bash错误,请更改路径以增加一个前导斜杠,例如
export jmeter_path=“///opt/apache-jmeter-5.2.1/bin”
或者在本例中
//data/TEST.jmx
谢谢,我已经修改为
docker run-v“$(pwd)”:/data my/jmeter\jmeter-n-t//data/TEST.jmx-l//data/res.jtl
但现在我有一个错误:
发生了一个错误:文件/data/TEST.jmx不存在或无法打开
。。。有什么想法吗?真的,我对这个错误一无所知,在谷歌上也找不到任何帮助……现在你是在Windows上运行Linux还是其他方式<代码>$(pwd)在Windows中不工作。请提供$(pwd)的.jmx instade的路径。您的命令应该类似于docker run-v”“:/data my/jmeter\jmeter-n-t//data/TEST.jmx-l//data/res.jtl
docker run --rm amos/jmeter \
  jmeter -n ...