一、环境介绍
使用docker两台centos7虚拟机
服务端IP:172.172.0.7
客户端IP:172.172.0.8
二、操作步骤
服务端执行(172.172.0.7)
1.创建容器
在docker中开启NFS服务需要挂载主机的目录,才能通过NFS共享
docker run -dit -v /mnt:/dockermnt --privileged --net docker-br0 --ip 172.172.0.7 --name nfs-server-01 centos /usr/sbin/init
2.进入容器主机
docker exec -it 5b8ce1243e00 /bin/bash
3.安装NFS服务
因为centos7自带了rpcbind,所以不用安装rpc服务,rpc监听在111端口,可以使用 ss -tnulp | grep 111查看rpc服务是否自动启动,如果没有启动,就systemctl start rpcbind 启动rpc服务。rpc在nfs服务器搭建过程中至关重要,因为rpc能够获得nfs服务器端的端口号等信息,nfs服务器端通过rpc获得这些信息后才能连接nfs服务器端
yum -y install nfs-utils
4.查看使用安装成功
rpm -qa nfs-utils
5.编辑/etc/exports
添加以下内容
/dockermnt 172.172.0.0/24(rw,async)
6.启动NFS服务
systemctl start nfs
启动后 使用rpcinfo -p 172.172.0.7 查看
7.使用showmount -e localhost
8.修改/dockermnt目录权限
非常重要,不然目录只读,无法写入数据
chown -R nfsnobody.nfsnobody /dockermnt
9.开机启动服务
systemctl enable nfs-server.server
systemctl enable rpcbind
让nfs,rpcbind开机自动启动,实验完成。
客户端执行(172.172.0.8)
1.安装NFS
客户端上不需要启动nfs服务,只是为了使用showmount工具
yum -y install nfs-utils
2.检测rpc是否启动
rpcinfo -p
3.使用showmount -e 172.172.0.7查看
4.挂载到本地/nfs目录
mount -t nfs 172.172.0.7:/dockermnt /nfs
注意事项
1.重载NFS配置
修改/etc/exports后,需执行/etc/init.d/nfs reload或exportfs-rv重新加载NFS配置,但不需要restart NFS。在生产环境中,此操作要注意。
2.挂载优化
在企业工作场景,一般来说,NFS服务器共享的只是普通静态数据(图片、附件、视频),不需要执行suid、exec等权限,挂载的这个文件系统只能作为数据存取之用,无法执行程序,对于客户端来讲增加了安全性,例如:很多木马篡改站点文件都是由上传入口上传的程序到存储目录,然后执行的。 因此在挂载的时候,用下面的命令很有必要:
mount -t nfs -o nosuid, noexec, nodev, rw 10.0.0.7: /data /mnt