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"
您可以通过以下几种方式来做到这一点:
-
使用-w选项来更改工作目录:
-w,–workdir =“”容器内的工作目录
https://docs.docker.com/engine/reference/commandline/run/#set-working-directory–w
-
将整个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。