我们可以修复一个无法启动的docker容器中的一些文件吗?

np8igboo  于 2023-04-11  发布在  Docker
关注(0)|答案(1)|浏览(184)

我有一个集装箱无法启动。

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容器中的一些文件?
谢谢。

kd3sttzy

kd3sttzy1#

如果启动时映像无法运行,那么正确的做法是找出问题所在并构建一个可以运行的新映像。
尝试让当前映像运行而不修改它最多是一种变通方法,并且每次要运行映像时都必须这样做会很烦人。
为了帮助您诊断问题,您可以在运行映像时覆盖入口点。然后您可以在容器中启动shell并查看run_task.sh文件的权限。
要做到这一点,您可以像这样运行图像

docker run -it --entrypoint /bin/sh <image name>

这应该会将您置于容器内的shell中,您可以探索文件系统。

相关问题