Dockerfile无法运行可执行文件

时间:2020-06-08 07:49:08

标签: docker

我有以下Dockerfile

FROM rikorose/gcc-cmake

RUN git clone https://github.com/hect1995/UBIMET_Challenge.git

WORKDIR /UBIMET_Challenge

RUN mkdir build

WORKDIR build

#RUN apt-get update && apt-get -y install cmake=3.13.1-1ubuntu3 protobuf-compiler

RUN cmake ..

RUN make

CMD ["./ubimet /UBIMET_Challenge/data/1706221600.29 output.csv"]

即使它说它在构建时也不执行最后一行(或者它执行不正确),就好像您在运行最后一行一样,它应该生成2个文件,一旦我使用以下命令检查它们就不会生成:

docker run -t -i trial /bin/bash

尽管如此,如果我进入容器,然后从那里运行:

./ubimet /UBIMET_Challenge/data/1706221600.29 output.csv

它会生成文件,那么为什么在构建时却不生成文件?

2 个答案:

答案 0 :(得分:3)

CMD是启动容器时要运行的默认命令。你压倒一切 通过将/bin/bash传递到docker run来实现。

CMD更改为RUN(以在构建时运行脚本),或者运行docker run,而不使用尾随命令(在启动容器时运行)。

答案 1 :(得分:1)

您使用的CMD错误。 CMD has 3 forms,您所使用的都不是:

CMD

CMD指令具有三种形式:

  • CMD ["executable","param1","param2"](执行表单,这是首选形式)
  • CMD ["param1","param2"](作为ENTRYPOINT的默认参数)
  • CMD command param1 param2(shell形式)

您可以像这样使用CMD

CMD ["./ubimet", "/UBIMET_Challenge/data/1706221600.29", "output.csv"]