docker运行<IMAGE> <MULTIPLE COMMANDS>

我试图运行这样的MULTIPLE命令。

docker run image cd /path/to/somewhere && python a.py 

但是这给了我“没有这样的文件或目录”的错误,因为它被解释为…

 "docker run image cd /path/to/somewhere" && "python a.py" 

看起来像“”或()这样的一些ESCAPE字符是需要的。

所以我也试过了

 docker run image "cd /path/to/somewhere && python a.py" docker run image (cd /path/to/somewhere && python a.py) 

但是这些都不起作用。

我已经search了Docker运行参考,但没有find有关ESCAPE字符的任何提示。

要在docker中运行多个命令,请使用/bin/bash -c和分号;

 docker run image /bin/bash -c "cd /path/to/somewhere; python a.py" 

您可以通过以下几种方式来做到这一点:

  1. 使用-w选项来更改工作目录:

    -w,–workdir =“”容器内的工作目录

    https://docs.docker.com/engine/reference/commandline/run/#set-working-directory–w

  2. 将整个parameter passing给/ bin / bash:

     docker run image /bin/bash -c "cd /path/to/somewhere; python a.py" 

你也可以在Doker容器中使用pipe道命令bash -c "<command1> | <command2>"例如:

 docker run img /bin/bash -c "ls -1 | wc -l" 

但是,如果不在远程调用shell,输出将被redirect到本地terminal。