[英]Error running docker container: starting container process caused "exec: \"python\": executable file not found in $PATH": unknown
[英]Docker : starting container process caused “exec: \”-n\“: executable file not found in $PATH”: unknown
在我的 docker 映像(运行)上启动命令时,我收到以下错误:
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]
因此,您正在运行一个名为amos/jmeter
的映像,并且运行它的命令是-n -t...
。 您收到错误是因为您只给出了选项列表而不是实际命令。
第一部分是在docker run
行中包含实际命令:
docker run --rm amos/jmeter \
jmeter -n ...
在 Dockerfile 中安装软件的方式也会出现问题。 (您不需要docker run --volume
来提供映像中已经存在的软件。)每个RUN
命令在新环境(甚至在新容器中)中的新 shell 中开始,例如 RUN cd...
在它自己的行中不做任何事情。 您需要使用WORKDIR
和ENV
等 Dockerfile 指令来更改环境。 jmeter
命令不在标准的二进制目录中,因此运行它也会有些麻烦。 我可能会改变:
# ...
# Run all APT commands in a single command
# (Layer caching can break an install if the list of packages changes)
RUN apt-get clean \
&& apt-get update \
&& apt-get -y install ca-certificates
# Download and unpack the JMeter tar file
# This is all in a single RUN command, so
# (1) the `cd` at the effect has (temporary) effect, and
# (2) the tar file isn't committed to an image before you `rm` it
RUN cd /opt \
&& wget ${JMETER_DOWNLOAD_URL} \
&& tar xzf apache-jmeter-${JMETER_VERSION}.tgz \
&& rm apache-jmeter-${JMETER_VERSION}.tgz
# Create a symlink to the jmeter process in a normal bin directory
RUN ln -s /opt/apache-jmeter-${JMETER_VERSION}/bin/jmeter /usr/local/bin
# Indicate the default command to run
CMD jmeter
最后,还有关于在哪里存储数据文件的问题。 最好将数据存储在应用程序目录之外; 在 Docker 上下文中,使用/data
之类的短(如果非标准)目录路径很常见。 请记住, docker run
命令中的任何文件路径都引用容器中的路径,但您需要docker run -v
bind-mount 选项(您原来的--volume
等效)以使其在主机上可见。 这会给你一个最终的命令,比如:
docker run -v "$PWD:/data" atos/jmeter \
jmeter -n -t /data/TEST.jmx -l /data/res.jtl
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.