工作环境:win10专业版+VMWARE安装centos7+虚拟机centos7上安装docker容器php,nginx,mysql。


因为工作方便与效率的问题。我必须把我window工作代码项目文件夹共享给虚拟机centos7,

再通过docker run -v把共享文件挂载到容器中。这里就存在一个权限问题。所以折腾了一段时间。


第一步:window与虚拟机centos共享文件夹。

VMware的编辑虚拟机--选项--共享文件夹操作即可。可以百度查看。

然后到虚拟机通过ls /mnt查看是否有hgfs文件夹。假如有就不需要建立hgfs文件夹了。

查看共享是否有效。

vmware-hgfsclient

[root@localhost conf.d]# vmware-hgfsclient

code

Code是我共享的名字。

挂载共享文件到Linux系统

sudo vmhgfs-fuse .host:/code /mnt/hgfs


验证是否正常挂载

root@ubuntu:/home/caojj#  mount -t vmhgfs .host:/F /mnt/hgfs

Error: cannot mount filesystem: No such device

root@ubuntu:/home/caojj# sudo vmhgfs-fuse .host:/F /mnt/hgfs

fuse: mountpoint is not empty

fuse: if you are sure this is safe, use the 'nonempty' mount option

这里表示为空,假如允许挂空文件,使用

00001. 

sudo vmhgfs-fuse .host:/code /mnt/hgfs -o allow_other -o nonempty

(这个可以把放到/etc/rc.local,开机自动启动挂载操作,allow_other是允许别的用户读写权限,要不然该文件夹就会出现文件夹权限,特别nginx,php指向到该文件的时候就会出现问题。)


root@ubuntu:/home/caojj# cd /mnt/hgfs

root@ubuntu:/mnt/hgfs# ls

Code


修改docker的php容器,与nginx容器启动挂载文件。

方式一:修改配置文件(需停止docker服务)

1、停止docker服务

systemctl stop docker.service(关键,修改之前必须停止docker服务)

2、vim /var/lib/docker/containers/container-ID/config.v2.json

修改配置文件中的目录位置,然后保存退出

"MountPoints":{"/home":{"Source":"/docker","Destination":"/home","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"//docker/","Target":"/home"}}}

3、我还修改了hostconfig.json的挂载文件,之前我单独修改这个文件是不起作用的。后来我修改config.v2.json后,起到作用,我就搞不清楚这个文件需要不需要修改。但是最好同步修改比较好一些。

到/var/lib/docker/containers/容器id/下面去修改