代码之家  ›  专栏  ›  技术社区  ›  Matthew Hoggan

从bash脚本运行“docker run”失败。命令行上的命令不会失败

  •  0
  • Matthew Hoggan  · 技术社区  · 5 年前

    如果我从命令行运行以下命令。

    docker run -t repo:tag ls -l
    

    命令成功了。但是,如果在bash脚本中调用相同的代码,则会得到以下错误:

    Docker:来自守护程序的错误响应:OCI运行时创建失败: container_linux.go:348:启动容器进程导致“exec:\”ls -L\“:在$path中找不到可执行文件”:未知。

    bash脚本会导致这个错误吗?

    1 回复  |  直到 5 年前
        1
  •  1
  •   erik258    5 年前

    “exec:\”ls-l\“:在$path中找不到可执行文件”

    从错误中我可以看出,当您调用Docker时,您以某种方式调用 ls -l 包括空间作为一个参数。有点像

    docker run -t repo:tag "ls -l" # wrong
    

    或者也许

    cmd="ls -l" 
    docker run -t repo:tag "$cmd" # wrong
    

    解析docker命令的shell必须看到 ls -l 作为单独的参数使参数 -L 区别于 LS 可执行文件名。

    cmd="ls -l" 
    docker run -t repo:tag $cmd #works