OCI 运行时执行失败:执行失败:container_linux.go:349:启动容器进程导致“执行:

Sat*_*ngi 13 containers image exec docker

我已经使用我们的应用程序创建了映像,运行该映像后,我可以看到 docker 容器也已创建,当我尝试进入 docker 容器时,我收到以下错误,您可以在这里帮助我吗?

“”“”OCI运行时执行失败:执行失败:container_linux.go:349:启动容器进程导致“执行:”bash“:在$ PATH中找不到可执行文件”:未知“”“”

我尝试执行以下所有命令

 docker run -it exec 962f5d99458c
 docker run -it 962f5d99458c
 docker exec -it 962f5d99458c /bin
 docker exec -it 75f6cb44f9e1
 docker run --rm -ti 962f5d99458c sh
 docker run --rm -ti 962f5d99458c /bin
 docker exec  --rm -ti 962f5d99458c /bin
 docker exec  -ti 962f5d99458c /bin
 docker exec  -ti 962f5d99458c \bin
 docker exec -it 75f6cb44f9e1 bash
Run Code Online (Sandbox Code Playgroud)

但运气不好......你能在这里帮助我吗?

ane*_*yte 10

该错误表示启动命令无效,因为映像中没有(或没有$PATH)某些可执行文件(bash在本例中)。bash对于某些镜像(例如基于 Alpine Linux 或)来说,缺少就足够了scratch,但如果有任何 shell,您可以使用sh

# create a container from image and get straight into shell
docker run -it <image> sh

# or start a container in background, then get into shell
docker run -d <image>
docker exec -it <container> sh
Run Code Online (Sandbox Code Playgroud)

如果映像中没有 shell,那么启动它的唯一方法是使用映像应该运行的应用程序的二进制文件。通常它是开箱即用的,除非您已经在 Dockerfile 中或通过参数重写了ENTRYPOINT和/或。默认启动参数可以通过以下方式找到:CMDrundocker inspect

docker image inspect nginx | jq '.[0].Config.Entrypoint'
docker image inspect nginx | jq '.[0].Config.Cmd'
Run Code Online (Sandbox Code Playgroud)

如果您绝对确定可执行文件存在但仍然收到错误,使用绝对路径可能会有所帮助(例如,/bin/bash而不是简单地bash)。