Windows+;VirtualBox+;Ubuntu+;Docker&x2B;Nginx权限

Windows+;VirtualBox+;Ubuntu+;Docker&x2B;Nginx权限,ubuntu,docker,nginx,docker-compose,virtualbox,Ubuntu,Docker,Nginx,Docker Compose,Virtualbox,Windows主机和Ubuntu来宾之间的共享文件夹具有以下权限:在Ubuntu中的Windows 770中的777 所以。。。当我运行docker compose时,如下所示: version: '2' services: web: image: nginx:latest ports: - "8080:80" volumes: - ./sf_compartida/codigo:/code

Windows主机和Ubuntu来宾之间的共享文件夹具有以下权限:在Ubuntu中的Windows 770中的777

所以。。。当我运行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;
    }
}
容器中文件夹/代码中的权限有770个权限,它抛出403个禁止。以下权限位于Windows和Ubuntu(sf_Compatida)共享文件夹中的Ubuntu(在VBox中)中:

以及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

mnt目录中,在我的共享目录Ubuntu1604Docker上创建了具有正确权限的符号链接当前用户名:groupname


顺便说一句,我的英语很抱歉

我在使用apache作为Web服务器时遇到了同样的问题,并解决了以下问题:

  • 首先,我将vboxsf组添加到我的容器中
$docker exec addgroup--组的gid id
  • 然后,我将apache用户(在我的例子中是www数据)添加到组中
$docker exec usermod-aG vboxsf www data#(您的用户可以不同)
我无法更改权限,因此我将相同的环境(用户和组)从主机映射到docker容器。

什么是
mnt.sh
?没有这些,您的答案是不完整的。请在上面的文本
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
Windows和Ubuntu之间的共享文件夹是通过VirtualBox建立的,不是从Linux建立的。实际上,你应该获得更多的投票,但遗憾的是,社区并不总是正确的:)
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
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/
$ docker exec addgroup --gid id_of_vboxsf_group $ docker exec usermod -aG vboxsf www-data #(your user can be different)