Windows 主机和 Ubuntu 来宾之间的共享文件夹具有以下权限: 777 in Windows 770 in Ubuntu
所以......当我像这样运行一个 docker-compose 时:
version: '2'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./sf_compartida/codigo:/code
- ./site.conf:/etc/nginx/conf.d/default.conf
networks:
- code-network
php:
image: php:fpm
volumes:
- ./sf_compartida/codigo:/code
networks:
- code-network
networks:
code-network:
driver: bridge
还有这个 Nginx 的 site.conf 文件:
server {
listen 80;
index index.php index.html;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /code;
location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
容器中文件夹/code 中的权限有 770 个权限,它抛出 403 个禁止权限。以下权限位于 Ubuntu 中(在 VBox 中(,位于 Windows 和 Ubuntu 之间的共享文件夹中 (sf_compartida(:
/home/ubuntu/geek/dockerised-php/sf_compartida/codigo
drwxrwx--- 1 root vboxsf 0 abr 11 20:27 ./
drwxrwx--- 1 root vboxsf 4096 abr 11 20:24 ../
-rwxrwx--- 1 root vboxsf 2 mar 27 17:42 adios.php*
-rwxrwx--- 1 root vboxsf 0 abr 11 20:07 fichero1.php*
-rwxrwx--- 1 root vboxsf 24 mar 27 17:40 hola.php*
-rwxrwx--- 1 root vboxsf 29 mar 25 23:56 index.php*
以及 Web 容器内的权限:
drwxrwx--- 1 root 119 0 Apr 11 18:27 .
drwxr-xr-x 1 root root 4096 Apr 11 19:00 ..
-rwxrwx--- 1 root 119 2 Mar 27 15:42 adios.php
-rwxrwx--- 1 root 119 0 Apr 11 18:07 fichero1.php
-rwxrwx--- 1 root 119 24 Mar 27 15:40 hola.php
-rwxrwx--- 1 root 119 29 Mar 25 21:56 index.php
我尝试使用其他文件夹(不是通过 VBox 共享的文件夹(并且它可以工作,而且如果我将权限从 777 更改为 770,它就不再有效了,所以一切都告诉我权限导致了问题。
请帮忙...知道吗?
我有一些问题。我试图解决这个问题,但没有找到任何东西。
但我在小组中理解了这个问题:vboxsf
我找到了文档
并在主目录中为当前用户创建短脚本和mnt目录
sharename="Ubuntu1604Docker"
sudo mkdir /mnt/$sharename
sudo chmod 777 /mnt/$sharename
sudo mount -t vboxsf -o uid=1000,gid=1000 $sharename /mnt/$sharename
ln -s /mnt/$sharename $HOME/mnt/$sharename
并运行此脚本:$ sudo ./mnt.sh
在我的共享目录 Ubuntu1604Docker 上创建了 mnt 目录符号链接,具有正确的权限 当前用户名:组名
script@ubuntu-16:~/mnt$ ll
total 8
drwxrwxr-x 2 script script 4096 Apr 29 19:45 ./
drwxr-xr-x 10 script script 4096 Apr 29 19:58 ../
lrwxrwxrwx 1 script script 21 Apr 29 19:45 Ubuntu1604Docker -> /mnt/Ubuntu1604Docker/
附言对不起我的英语
我在使用 apache 作为网络服务器时遇到了同样的问题,并解决了以下问题:
- 首先,我将 vboxsf 组添加到我的容器中
$ docker exec addgroup --gid id_of_vboxsf_group
- 然后,我将 apache 用户(在我的例子中是 www-data(添加到组中
$ docker exec usermod -aG vboxsf www-data #(你的用户可以不同(
我无法更改权限,因此我将相同的环境(用户和组(从主机映射到 docker 容器。