如何查看与修复无法启动的Docker容器内的文件?
解决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
通过docker inspect确认容器的Entrypoint为/scripts/run_task.sh,退出码126说明脚本缺少执行权限,以下是两种无需启动原容器即可修复的方法:
方法一:本地拷贝修改后放回
- 将容器内的脚本复制到本地:
docker cp 6ea7961f70fac969d6e91bde125ff64f79f856171e17827a9a6ded19fe6629a2:/scripts/run_task.sh ./run_task.sh - 给本地脚本添加执行权限:
chmod +x ./run_task.sh - 将修改后的脚本复制回容器:
docker cp ./run_task.sh 6ea7961f70fac969d6e91bde125ff64f79f856171e17827a9a6ded19fe6629a2:/scripts/run_task.sh - 重启容器:
docker start 6ea7961f70fac969d6e91bde125ff64f79f856171e17827a9a6ded19fe6629a2
方法二:通过临时容器挂载修改
- 启动临时Ubuntu容器,挂载原容器的文件系统:
docker run --rm -it --volumes-from 6ea7961f70fac969d6e91bde125ff64f79f856171e17827a9a6ded19fe6629a2 ubuntu:latest bash - 在临时容器内给脚本添加执行权限:
chmod +x /scripts/run_task.sh - 退出临时容器(容器会自动删除),重启原容器即可。
额外建议
如果该脚本是镜像内置的,建议修改Dockerfile,添加RUN chmod +x /scripts/run_task.sh指令后重新构建镜像,从根源避免权限问题。
内容的提问来源于stack exchange,提问作者grizzlybears
相关产品推荐
相关产品推荐

