2016-01-27 73 views
0

我一直在找docker几个小时;我将Windows 8.1作为主机运行,并将VirtualBox与boot2docker一起运行。Docker(NGINX,PHP,mySQL)和Windows - 文件权限

这是我的搬运工,compose.yml:

mysql: 
    image: mysql 
    ports: 
     - "6603:3306"  
    environment: 
     MYSQL_ROOT_PASSWORD: mysql 
     MYSQL_USER: mysql 
fpm: 
    image: php:7.0.2-fpm 
    volumes: 
     - /c/Users/Administrator/www:/var/www/html 
    ports: 
     - "9000:9000" 
    links: 
     - mysql 
nginx: 
    image: nginx 
    ports: 
     - "80:80" 
     - "443:443" 
    volumes: 
     - /c/Users/Administrator/www:/var/www/html 
    links: 
     - fpm 

这工作正常(我可以去我的码头工人的IP地址,看看nginx的欢迎页面);尽管当我运行mkdir(例如通过php)时,它会给出有关Windows权限的错误。

回答

0

,您应该使用volumes标签,而不是volumes_from

  • volumes可以安装从主机目录容器 和
  • volumes_from坐骑其他服务或容器目录

请看docker-compose file documentation

而你的搬运工,撰写文件应该是这样的:

fpm: 
    image: php:7.0.2-fpm 
    volumes: 
     - /c/Users/Administrator/www:/var/www/html 
    ports: 
     - "9000:9000" 
    links: 
     - mysql 
nginx: 
    image: nginx 
    ports: 
     - "80:80" 
     - "443:443" 
    volumes_from: 
     - fpm 
    links: 
     - fpm 
+0

拼写错误;它实际上是实际的数量。 - 尽管如此,仍然没有解决权限问题。 – JuLiAnc

+0

你会得到什么错误? –

+0

没有权限创建目录 – JuLiAnc

0

这是Windows文件系统与VirtualBox的虚拟机共享方式的限制,使用VirtualBox的客户添置。

与VirtualBox虚拟机共享的文件由虚拟机内的用户“docker”和组“staff”拥有。 VM(和容器)内部的进程不能改变这些文件的所有权。

作为解决方法,您可以尝试将这些容器作为与这些文件相同的uid/gid--user 1000:50)运行;

-u, --user=""     Username or UID (format: <name|uid>[:<group|gid>]) 

--ulimit = [] ULIMIT选项

也有一个在GitHub上的问题跟踪是提到了一些变通的悬而未决的问题; #581 Only root can write to OSX volumes/Can't change permissions within

+0

我会试试看,谢谢:) – JuLiAnc

+0

我们可以参考'--user'参数的用法吗?据我现在码头将有用户映射从v1.10 –

+0

这是一个不同的功能;用户命名空间将允许您重新映射根用户守护进程范围内(而不是每个容器)。 '--user'功能在Docker中已经有一段时间了。我将添加一个指向文档的链接 – thaJeztah