我有一个无法启动的容器。
Error response from daemon: failed to create shim task: OCI runtime create failed:
runc create failed: unable to start container process:
exec: "/scripts/run_task.sh": permission denied: unknown
如果检查容器,我可以看到
[
{
"Id": "6ea7961f70fac969d6e91bde125ff64f79f856171e17827a9a6ded19fe6629a2",
"Created": "2023-03-30T07:12:37.342296803Z",
"Path": "/scripts/run_task.sh",
"Args": [],
"State": {
"Status": "created",
"Running": false,
"ExitCode": 126,
"Error": "failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/scripts/run_task.sh": permission denied: unknown",
...
},
...
"Config": {
... ,
"Env": [
"APP_ENV=local_task",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin",
"LANG=ja_JP.utf8"
],
"Cmd": null,
"Entrypoint": [
"/scripts/run_task.sh"
],
"OnBuild": null,
}
}
]
可能仅仅是由于'/scripts/run_task.sh
'文件模式错误造成的,但是容器没有运行,我不能做像'docker exec -it xxx bash
'这样的事情,我们有一些方法来检查/修复一些文件在一个失败的启动docker容器?
谢谢。
如果映像在启动时无法运行,那么正确的做法是找出问题所在,并构建一个可以运行的新映像。
尝试在不修改当前图像的情况下运行它充其量只是一种解决方法,并且每次要运行图像时都必须这样做会很烦人。
为了帮助您诊断问题,您可以在运行映像时重写入口点。然后你可以在容器中启动一个shell,查看你的run_task.sh
文件的权限。
要做到这一点,您可以像这样运行图像
docker run -it --entrypoint /bin/sh <image name>
这将把您置于容器内的shell中,您可以探索文件系统。