Docker容器执行yarn命令报EPERM权限错误的原因排查
Docker容器启动后因EPERM权限错误退出的解决方案
我之前也碰到过一模一样的问题,咱们来一步步拆解原因和解决办法:
问题根源
你用的node:12-alpine镜像默认是用node用户(UID通常是1000)来运行命令的,但Windows下把本地目录挂载到Linux容器时,容器内的挂载目录权限会和Windows的文件系统权限映射出现不兼容的情况——即使你本地给了管理员完全控制,容器里的node用户还是没有足够权限去创建node_modules目录或者写入日志文件。
快速解决办法
最简单直接的方式是让容器以root用户运行命令,这样就能绕过权限限制(开发环境完全没问题,生产环境再考虑权限收紧)。修改你的Docker命令,加上--user root参数:
docker run -dp 3000:3000 ` -w /app ` -v "$(pwd):/app" ` --user root ` node:12-alpine ` sh -c "yarn install && yarn run dev"
额外排查点
如果加了root用户还是不行,你可以检查下Docker Desktop的文件共享设置:
- 打开Docker Desktop设置,进入Resources > File Sharing
- 确保你当前项目所在的磁盘(比如C盘)已经被勾选允许共享,没开的话也会导致挂载目录权限异常
内容的提问来源于stack exchange,提问作者Aadesh Dhakal
相关产品推荐
相关产品推荐

