You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows+VirtualBox+Ubuntu+Docker+Nginx权限问题咨询

Windows-Ubuntu共享文件夹配合Docker Compose的权限问题

背景情况

我遇到了一个权限相关的问题,先跟大家说下我的环境和配置:

  • Windows宿主机和Ubuntu虚拟机之间设置了共享文件夹,权限配置为:Windows端是777,Ubuntu端是770
  • 我用以下docker-compose.yml配置运行Nginx和PHP-FPM服务,但容器里的进程似乎无法正常访问共享文件夹里的代码:
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内容不全,开头是ser...,不过核心问题应该集中在共享文件夹的权限映射上。

我整理的可能解决思路

  • 调整Ubuntu端共享文件夹的组权限:Ubuntu端共享文件夹是770权限,只有所有者和所属组用户能读写。但Docker容器里的Nginx默认用nginx用户(UID 101),PHP-FPM默认用www-data用户(UID 33),这些用户大概率不在共享文件夹的所属组里。可以先查看共享文件夹的所属组:
    ls -ld ./sf_compartida/codigo
    
    然后把对应用户添加到该组:
    sudo usermod -aG <共享文件夹组名> www-data
    
  • 在Docker Compose中指定运行用户:让容器进程以和共享文件夹权限匹配的用户运行,比如给PHP服务添加user: "33:33"(对应www-data的UID和GID),Nginx服务添加user: "101:101",这样容器内进程的权限就能和共享文件夹的770权限兼容:
    php:
      image: php:fpm
      user: "33:33"
      volumes:
        - ./sf_compartida/codigo:/code
      networks:
        - code-network
    
  • 临时调整权限排查问题:如果只是临时确认是不是权限导致的,可以把Ubuntu端共享文件夹权限改成775,测试容器能否正常访问,但这个配置不建议长期使用。

内容的提问来源于stack exchange,提问作者jmunozco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:50:18