每当我尝试通过运行alpine linux的minikube仪表板执行进入pod时,它会崩溃并关闭连接并出现以下错误
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:262: starting container process caused "exec: \"bash\": executable file not found in $PATH"
CONNECTION CLOSED
命令输出" kubectl版本"内容如下:
Client Version: version.Info{Major:"1", Minor:"8",
GitVersion:"v1.8.0", GitCommit:"6e937839ac04a38cac63e6a7a306c5d035fe7b0a", GitTreeState:"clean", BuildDate:"2017-09-28T22:57:57Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"8",
GitVersion:"v1.8.0",
GitCommit:"0b9efaeb34a2fc51ff8e4d34ad9bc6375459c4a4",
GitTreeState:"clean", BuildDate:"2017-11-29T22:43:34Z", GoVersion:"go1.9.1", Compiler:"gc", Platform:"linux/amd64"}
请问有人可以提供建议吗?只要他们有BASH而不是ASH,我就可以完全运行其他容器。
非常感谢
答案 0 :(得分:1)
通常Alpine linux不包含bash。 您是否尝试使用以下任何一种方法执行容器?
/bin/ash
/bin/sh
ash
sh
所以例如kubectl exec -it my-alpine-shell-293fj2fk-fifni2 -- sh
应该完成这项工作。
答案 1 :(得分:1)
每次我尝试并执行一个吊舱
您没有指定您向kubectl exec
提供的命令,但根据您的问题,我将假设它是kubectl exec -it $pod -- bash
正如错误消息所述,问题在于您使用的容器图像不提供bash。很多很多“苗条”的图像都没有随bash
一起提供,因为依赖这样做会带来它们。
如果您想要一个适用于所有图片的命令,请使用sh
,因为如果bash
存在,则会有90%的时间与/bin/sh
符号链接,其他情况(正如您在ash
或dash
或其他方面提到的那样),然后使用sh
仍然工作并允许您确定是否需要调整命令以专门请求一个不同的外壳。
因此kubectl exec -it $pod -- sh
是我期望工作的命令