我正在尝试运行多个这样的命令。
docker run image cd /path/to/somewhere && python a.py
但这给了我“没有这样的文件或目录”错误,因为它被解释为...
"docker run image cd /path/to/somewhere" && "python a.py"
似乎需要一些转义字符,如"“或()。
所以我也试着
docker run image "cd /path/to/somewhere && python a.py"
docker run image (cd /path/to/somewhere && python a.py)
但这些都不起作用。
我已经搜索了Docker Run Reference,但没有找到任何有关转义字符的提示。
发布于 2015-02-13 09:07:53
要在docker中运行多个命令,请使用/bin/bash -c
和分号;
docker run image_name /bin/bash -c "cd /path/to/somewhere; python a.py"
如果我们需要command2 (python)将被执行当且仅当command1 (cd)返回零(无错误)退出状态时,使用&&
而不是;
docker run image_name /bin/bash -c "cd /path/to/somewhere && python a.py"
发布于 2017-01-06 00:31:27
您还可以在Docker容器中使用管道命令,例如bash -c "<command1> | <command2>"
:
docker run img /bin/bash -c "ls -1 | wc -l"
但是,在不调用远程中的shell的情况下,输出将被重定向到本地终端。
发布于 2020-04-20 18:56:58
如果您正在运行的命令相对简单,则bash -c
可以很好地工作。但是,如果您试图运行一长串充满控制字符的命令,情况可能会变得复杂。
我成功地解决了这个问题,方法是将我的命令从外部输入到进程中。
cat script.sh | docker run -i <image> /bin/bash
https://stackoverflow.com/questions/28490874
复制相似问题