Windows下Docker使用bind mount绑定挂载提示Access is denied问题问询
报错原因
你遇到的访问拒绝错误是Windows系统和Docker Desktop的权限机制共同导致的,核心原因有4个:
C:\Program Files是Windows系统级保护目录,默认只允许管理员账户写入,Docker Desktop的运行身份默认没有该目录的写入权限- 你没有给Docker Desktop开启对应磁盘的文件共享权限,Docker无法访问挂载路径
- 你使用的挂载路径混合了斜杠和反斜杠,Windows环境下容易出现路径解析错误
- Jenkins容器默认使用UID为1000的
jenkins用户运行,Windows目录的权限映射规则和Linux/Mac不同,容器内用户默认没有本地挂载目录的写入权限
Mac上运行无问题是因为macOS没有Windows的系统目录强保护机制,且Docker的跨平台权限映射逻辑更适配类Unix系统。
解决方案
按以下步骤操作即可解决:
- 更换挂载目录:不要将挂载目录放在
C:\Program Files下,建议迁移到当前用户的个人目录,例如C:\Users\你的用户名\docker\jenkins,先手动创建好该目录 - 开启Docker文件共享权限:打开Docker Desktop设置页,依次进入「资源」→「文件共享」,勾选挂载目录所在的盘符(例如C盘),点击应用并重启Docker
- 调整目录权限:右键点击你创建的本地jenkins目录,依次进入「属性」→「安全」→「编辑」,给
Users用户组添加「完全控制」权限后保存 - 修正运行命令:路径使用统一格式,可添加
-u root参数让容器以root身份运行,避免容器内用户权限不足,示例命令如下:
docker run --privileged=true -u root --name myJenkins3 -v "C:\Users\你的用户名\docker\jenkins":/var/jenkins_home -p 9191:8080 -p 40000:50000 jenkins/jenkins
内容的提问来源于stack exchange,提问作者coolcoder123
相关产品推荐
相关产品推荐

