搞定 osx 下 virtualbox 中的 docker container 访问共享文件夹的权限问题
案例是这样的:
- 有一台 osx 系统
- 安装了 virtualbox 虚拟机
- 在虚拟机里面装 Linux
- 在 Linux 里面装了 docker
- 用 docker 装了 Ubuntu 的 image
- 在 Ubuntu 的 container 中装了 nginx
现在把OSX 下的一个 web 开发文件夹共享给 virtualbox下的 Linux,然后在通过 docker 映射到 container 下,nginx 的 root 目录指向这个文件夹,提供 web 服务。
但是问题来了,nginx 会报错说“permission denied”。在 container 下可以很明显的看到,共享文件夹中的内容是存放在了999
这个 group 中。
分析一下原因,根源在于 virtualbox 从某一个版本开始,无法修改 osx 共享目录的权限了。可以看到,在 virtualbox 下的 Linux 中,共享文件夹的权限在一个叫做vboxsf
的 group 下面。
以下是解决方法:
- 在 container 下创建一个叫做
vboxsf
的 group:groupadd vboxsf
- 修改这个 group 的 id 为999:
vim /etc/group
- 把 www-data 这个用户加入到
vboxsf
中:usermod -a -G vboxsf www-data
- 重启 nginx:
service nginx restart