Docker容器启动报错:docker-entrypoint.sh权限拒绝求助
问题原因及解决办法
核心原因
这个错误大概率是Windows WSL2后端的权限映射异常导致的。Docker Desktop在Windows上依赖WSL2运行容器,重置出厂设置后,WSL的文件系统权限规则被打乱,导致容器内执行docker-entrypoint.sh脚本时,无法正确读取或执行当前目录(.)的内容,触发权限拒绝。
解决步骤
1. 重置WSL2环境
- 打开管理员权限的Windows终端,执行命令停止所有WSL实例:
wsl --shutdown - 卸载当前WSL发行版(根据你实际使用的发行版调整,比如Ubuntu):
wsl --unregister Ubuntu - 重新打开Docker Desktop,它会自动重建WSL发行版并配置权限。
2. 调整Docker Desktop的WSL集成设置
- 打开Docker Desktop设置,进入Resources > WSL Integration
- 确保你使用的WSL发行版处于开启状态,点击"Apply & Restart"
- 进入Settings > General,勾选"Use the WSL 2 based engine",重启Docker。
3. 修正容器挂载路径
如果启动容器时挂载了本地目录,避免直接挂载Windows路径(如C:\xxx)到容器的工作目录,改用WSL内的目录作为挂载源,示例:
docker run -v /home/你的用户名/项目目录:/容器内目标目录 镜像名称
4. 自定义镜像的权限修复(针对自己构建的镜像)
在Dockerfile中给docker-entrypoint.sh本身添加执行权限,而非仅设置当前目录权限:
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
同时确保ENTRYPOINT命令采用exec模式:
ENTRYPOINT ["exec", "/usr/local/bin/docker-entrypoint.sh"]
5. 彻底清理Docker残留后重装
如果之前重装无效,手动清理残留文件后再重装:
- 关闭Docker Desktop,删除
C:\Program Files\Docker目录 - 删除用户目录下的
.docker文件夹(如C:\Users\你的用户名\.docker) - 重新安装Docker Desktop,优先选择WSL2引擎模式。
内容的提问来源于stack exchange,提问作者Bart van de Meerendonk
相关产品推荐
相关产品推荐

