Windows+;VirtualBox+;Ubuntu+;Docker&x2B;Nginx权限
Windows主机和Ubuntu来宾之间的共享文件夹具有以下权限:在Ubuntu中的Windows 770中的777 所以。。。当我运行docker compose时,如下所示: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
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组添加到我的容器中
- 然后,我将apache用户(在我的例子中是www数据)添加到组中
我无法更改权限,因此我将相同的环境(用户和组)从主机映射到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)