我已经研究了几个小时的docker;我运行Windows 8.1作为主机,并使用boot2docker运行VirtualBox。
这是我的docker-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
这工作正常(我可以转到我的docker IP地址并查看nginx欢迎页面);尽管当我运行mkdir时,例如(通过php),它会给出有关Windows权限的错误。
您应该使用volumes
标签而不是volumes_from
-
volumes
可以将目录从主机挂载到容器和 -
volumes_from
从其他服务或容器挂载目录
请查看 docker 撰写文件文档
你的docker-compose文件应该看起来像这样:
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
这是使用VirtualBox来宾添加与VirtualBox虚拟机共享Windows文件系统的方式的限制。
与VirtualBox VM共享的文件由VM中的用户"docker"和组"员工"拥有。VM (和容器) 中的进程无法更改这些文件的所有权。
作为一种解决方法,您可以尝试将容器作为这些文件的相同uid
/gid
运行(--user 1000:50
);
-u, --user="" Username or UID (format: <name|uid>[:<group|gid>])
--ulimit=[] ulimit 选项
GitHub 问题跟踪器上还有一个未解决的问题,其中提到了一些解决方法; #581 只有 root 可以写入 OSX 卷/无法更改其中的权限