在我的MacOS笔记本电脑上,我使用以下方法在新创建的容器中安装了一个文件:
docker run --name mediawiki --link mysql:mysql -p 80:80 -v /Users/poiuytrez/Downloads/LocalSettings.php:/var/www/html/LocalSettings.php
--rm poiuytrez/mediawiki:1.25.3
但是,apache似乎有问题要读取文件。我们可以通过在容器中运行bash命令来学习读取权限不适用于所有:
root@078252e20671:/var/www/html# ls -l LocalSettings.php
-rw-r----- 1 1000 staff 4857 Nov 18 15:44 LocalSettings.php
我在Linux Debian 8机器上安装的docker上尝试了相同的过程,我得到了:
root@16e34a9b169d:/var/www/html# ls -l LocalSettings.php
-rw-r--r-- 1 www-data www-data 4858 Nov 19 13:32 LocalSettings.php
对我来说好多了。
如何在没有在boot2docker / dockermachine上执行chmod a + r的情况下为每个人添加读取权限?
我正在使用Docker 1.8.3
答案 0 :(得分:0)
LocalSettings.php是-rw-r -----。所以在容器中它是一样的......
答案 1 :(得分:0)
在docker-machine和boot2docker中,您的/ Users目录在同一路径的虚拟机内映射,因此当您映射该卷时,如:
-v /Users/poiuytrez/Downloads/LocalSettings.php:/var/www/html/LocalSettings.php
实际上是你在容器中安装的boot2docker目录,因此有2个级别。
您可以看到 LocalSettings.php 所有者在容器中不存在,因此当您ls -l
用户ID在您的案例中显示用户ID 1000和组员工时。
-rw-r----- 1 1000 staff 4857 Nov 18 15:44 LocalSettings.php
1000名员工
尝试查看boot2docker vm中的所有者和权限,其中包含boot2docker ssh
或docker-machine ssh <you-machine-name>
和ls -l
。
其他方法是在容器中添加ID为1000的用户,并以此用户身份运行您的Web服务器。
您还可以将fix-permission.sh脚本添加到容器运行命令。
在Docker路线图中,下一版本中的用户命名空间有一些改进。我几天前看到这篇文章: http://integratedcode.us/2015/10/13/user-namespaces-have-arrived-in-docker/ 我希望它能解决这个所有权问题。