【问题标题】:Docker starting container process caused "exec: \"arg\": executable file not found in $PATH": unknown.Docker 启动容器进程导致“exec:\”arg\”:$PATH 中找不到可执行文件”:未知。
【发布时间】:2019-12-18 16:02:05
【问题描述】:

我的任务是创建Dockerfile,使其按以下方式工作:

docker build -t test .
返回Image named test successfully created

docker run --rm test
返回Hello world!

docker run --rm test Universe
返回Hello Universe!

到目前为止我所拥有的:
Dockerfile

FROM ubuntu:14.04

LABEL maintainer="trthhrtz"

CMD if [ $# -eq 0 ]; then echo "Hello world!"; else echo "Hello " + $@ + "!"; fi

在输入参数的情况下不起作用,错误是:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"Universe\": executable file not found in $PATH": unknown.
ERRO[0000] error waiting for container: context canceled

【问题讨论】:

  • 您之前选择了正确的答案。从那以后发生了什么变化?

标签: bash docker


【解决方案1】:

这样会更容易:

  • 定义一个入口点脚本entrypoint.sh,并在其中编写您的命令逻辑脚本。
  • COPY that file 在你的 Dockerfile 中
  • 离开CMD未定义

这样,docker run -it --rm myImage arg1 arg2 ... 命令的任何附加参数都将传递给 bash entrypoint.sh 脚本,该脚本将正确解释 $@,如“What does set -e and exec "$@" do for docker entrypoint scripts?”所示。
请参阅“Passing arguments from CMD in docker”了解更多信息。

【讨论】:

    【解决方案2】:

    确保在执行docker command 时参数的顺序正确。

    例如:

    docker run --name test-ubuntu -it d37f4165b5d2 bash
    而不是
    docker run --name test-ubuntu d37f4165b5d2 -it bash

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 2018-09-21
      • 2022-11-10
      • 2020-01-15
      • 1970-01-01
      相关资源
      最近更新 更多