为 Docker 中的所有人以 read/write 模式挂载文件
Mount a file in read/write mode for all in Docker
在我的 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
LocalSettings.php 在我的 Mac 上是 -rw-r-----。所以它在容器中是一样的...
在 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 虚拟机中的所有者和权限,其中包含 boot2docker ssh
或 docker-machine ssh <you-machine-name>
和 ls -l
。
其他方法是在您的容器中添加一个 ID 为 1000 的用户,并且 运行 您的 Web 服务器作为该用户。
您还可以将修复-permission.sh 脚本添加到您的容器 运行 命令。
在 Docker 路线图中,下一个版本对用户命名空间进行了一些改进。前几天看到这篇文章:
http://integratedcode.us/2015/10/13/user-namespaces-have-arrived-in-docker/
我希望它能解决这个所有权问题。
在我的 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
LocalSettings.php 在我的 Mac 上是 -rw-r-----。所以它在容器中是一样的...
在 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 虚拟机中的所有者和权限,其中包含 boot2docker ssh
或 docker-machine ssh <you-machine-name>
和 ls -l
。
其他方法是在您的容器中添加一个 ID 为 1000 的用户,并且 运行 您的 Web 服务器作为该用户。
您还可以将修复-permission.sh 脚本添加到您的容器 运行 命令。
在 Docker 路线图中,下一个版本对用户命名空间进行了一些改进。前几天看到这篇文章: http://integratedcode.us/2015/10/13/user-namespaces-have-arrived-in-docker/ 我希望它能解决这个所有权问题。