我们可以修复一些文件在一个失败的启动docker容器?



我有一个无法启动的容器。

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中,您可以探索文件系统。

最新更新