docker-compose exec失败:在$ PATH中找不到可执行文件
我想通过docker-compose exec [service_name] [shell]
得到一个交互提示,如果第一个shell不存在,则在另一个shell上回退。
我试图运行以下命令:
docker-compose exec [service_name] "(which zsh && zsh) || (which bash && bash) || (which sh && sh)"
但是我得到这个错误:
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"\\\"(which zsh && zsh) || (which bash && bash) || (which sh && sh)\\\"\": executable file not found in $PATH"
如果我跑
docker-compose exec [service_name] bash
(zsh / bash / sh)
它会打开一个bash提示符,然后在我运行的容器中
(which zsh && zsh) || (which bash && bash) || (which sh && sh)
它工作正常,它将shell更改为zsh。
目前还不清楚容器内的命令实际上是什么。 如果有像/bin/sh
这样的入口点,那么你的命令将需要-c "command"
。 由于我没有你的docker-compose设置,所以这里有一个docker设置可能类似:
docker run -ti --entrypoint /bin/sh --rm alpine -c \ "(which zsh && zsh) || (which bash && bash) || (which sh && sh)"