我试图运行这样的多个命令。
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运行参考,但没有找到任何关于转义字符的提示。
TL; diana;
$ docker run --entrypoint /bin/sh image_name -c "command1 && command2 && command3"
关于已接受答案的一个问题如下。
没有人提到docker run image_name /bin/bash -c只是将一个命令附加到入口点。一些流行的图像足够智能,可以正确处理这些信息,但有些则不行。
想象一下下面的Dockerfile:
FROM alpine
ENTRYPOINT ["echo"]
如果你试着以echo的形式构建它并运行:
$ docker run echo /bin/sh -c date
您的命令将被追加到入口点,因此结果将是echo "/bin/sh -c date"。
相反,你需要重写入口点:
$ docker run --entrypoint /bin/sh echo -c date
Docker运行参考