【发布时间】:2017-10-08 09:51:44
【问题描述】:
我正在开发一个 ghost 博客并将其部署为 docker 容器。由于我的项目的目标之一是使用实时数据开发主题和其他内容,因此我按照 ghost docker 映像的建议为 /var/lib/ghost 目录创建了一个卷挂载。
ghost docker 映像可以正常安装驱动器,但是当它尝试 chown 文件时,会收到权限被拒绝错误。我正在运行 Windows 10 的 Creator 更新和最新的 Docker for Windows(即 Windows 10 Pro versin 1703 和 Docker 版本 17.03.1-ce-win5)
作为测试,我在家里和工作中都遵循了这个程序(我在以前版本的 Windows 10 上):
- 在 C:\users\joe\ 中创建一个 Project\site 目录
- 将docker-compose.yml文件放在目录下:
- 运行
docker-compose up
docker-compose.yml
version: '3' services: blog: image: ghost volumes: - ./blog:/var/lib/ghost ports: - "2368:2368"
在我的工作机器上,它会创建博客目录,并按照幽灵博客的预期填充主题和内容。
在我的家用机器上,我收到此错误:
错误:对于博客无法启动服务博客:创建挂载源路径“/C/Users/joe/Projects/site/blog”时出错:mkdir /C/Users/joe/Projects/site/blog:权限被拒绝 错误:启动项目时遇到错误。
如果我自己创建目录,然后再次运行docker-compose.yml,我会收到此错误:
blog_1 | chown:更改“/var/lib/ghost”的所有权:权限被拒绝
site_blog_1 以代码 1 退出
挂载目录确实有效,我已经运行了 alpine ls /data 示例,显示在 Docker for Windows 中的共享驱动器设置中。
我比较了 docker 中的设置、虚拟网络上的设置、家庭目录和工作目录的设置——我能找到的唯一区别是因为工作在域上,并且有不同的用户名,而且我的版本窗口数为 1607。
我不知道这是一个错误,是当前 windows && docker 之间的不良交互,还是我在本地做错了什么。我承认我倾向于后者,因为我在任何地方都找不到关于此的文档。
【问题讨论】:
-
您在该驱动器上启用了共享并在 docker/settings 中提供了凭据,我猜?
-
是的。我可以这样做: docker run --rm -v c:/Users:/data alpine ls /data 没有问题
-
我建议在这里创建一个问题:github.com/docker/for-win
标签: windows docker permissions