You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker启动容器报错:/app/entrypoint.sh权限被拒问题求助

问题描述

执行docker compose up -d启动Docker容器时,反复出现以下权限错误:

Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/app/entrypoint.sh": permission denied: unknown

已尝试通过sudo执行命令,且用chmod a+x为整个项目目录赋予可执行权限,但问题未解决。

修复方案

1. 在Dockerfile中显式设置entrypoint.sh的执行权限

主机上设置的文件权限在COPY到容器内时可能被重置,直接在构建过程中为容器内的脚本添加执行权限:
修改Dockerfile,在COPY ./html5-desktop/app /app之后添加一行:

RUN chmod +x /app/entrypoint.sh

重新构建镜像并启动容器:

docker compose build html5-desktop
docker compose up -d

2. 验证脚本是否被正确复制到容器内

确认entrypoint.sh确实存在于容器的/app目录中,且权限正确:
先构建临时镜像,再运行容器检查:

docker build -t temp-html5-desktop -f ./html5-desktop/Dockerfile .
docker run --rm temp-html5-desktop ls -l /app/entrypoint.sh

如果输出中没有-rwxr-xr-x这类包含可执行权限的标识,说明复制过程或权限设置有问题,需调整COPY路径或权限命令。

3. 检查是否存在VOLUME覆盖/app目录

如果Dockerfile或docker-compose.yml中定义了VOLUME挂载到/app目录,会覆盖容器内原本的文件,导致脚本权限丢失:

  • 查看Dockerfile是否有VOLUME /app这类配置,若有则移除;
  • 查看docker-compose.yml中html5-desktop服务是否有volumes挂载到/app,若有则确保挂载的主机目录中entrypoint.sh有可执行权限,或移除该挂载。

4. 修复脚本的换行格式(Windows环境下常见问题)

如果entrypoint.sh是在Windows系统中创建的,换行符为CRLF格式,Linux容器无法识别,会触发类似权限错误的提示:
在主机上使用dos2unix转换脚本格式:

dos2unix html5-desktop/app/entrypoint.sh

转换完成后重新构建并启动容器。


内容的提问来源于stack exchange,提问作者Magnus Helverskov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:40:32