我试图像这样运行多个命令。
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)
但这些并没有工作。
我已经寻找泊坞运行参考 ,但没有找到有关转义字符的任何提示。
要运行在泊坞窗,使用多个命令/bin/bash -c
和分号;
docker run image /bin/bash -c "cd /path/to/somewhere; python a.py"
在情况下,我们需要的命令2(蟒蛇),当且仅当命令1(CD)返回零(没有错误)退出状态,将使用执行&&
代替;
docker run image /bin/bash -c "cd /path/to/somewhere && python a.py"
你也可以多克尔容器内管的命令, bash -c "<command1> | <command2>"
,例如:
docker run img /bin/bash -c "ls -1 | wc -l"
但是,没有在远程调用壳的输出将被重定向到本地终端。
如果你希望将结果储存在容器外的一个文件,在本地机器,你可以做这样的事情。
RES_FILE=$(readlink -f /tmp/result.txt)
docker run --rm -v ${RES_FILE}:/result.txt img bash -c "cat /etc/passwd | grep root > /result.txt"
你的命令的结果将是可用/tmp/result.txt
在本地机器上。
对于谁比谁来到这里寻找做同样的docker-compose
你只需要预先设置bash -c
并附多个命令在引号,再加上加入&&
。
所以在OPS例如docker-compose run image bash -c "cd /path/to/somewhere && python a.py"