一.安装软件包
yum install -y nfs-utils
为了下载速度快,更改阿里云镜像,可以直接访问我另一篇博客,不走弯路!https://blog.csdn.net/Stephen_Daa/article/details/129444308?spm=1001.2014.3001.5501
二、启动服务(考虑开机启动问题)输入以下两条命令:
systemctl start nfs
(第一次启动服务用start,若不是第一次,就输入systemctl restart nfs
)
systemctl enable nfs
考虑开机自动启动
systemctl start rpcbind
启动rpcbind服务,rpcbind用来监听端口的。
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@nfs ~]# systemctl start rpcbind
三、查看rpcbind的端口–port 111(需要在rpcbind服务开启的状态下才能看到)
若没有netstas命令,可以用ss -anplut 或者下载此命令(包含netstat的软件包称为net-tools) 即yum install net-tools
了解更多安装netstat,请访问:https://cloud.tencent.com/developer/article/1852241
查看端口映射情况:
四、创建web共享目录
[root@nfs ~]# mkdir /web
[root@nfs ~]# cd /web
[root@nfs web]# echo "welcome to jiangda website" >index.html
[root@nfs web]# ls
index.html
五、编辑/etc/exports文件修改配置文件需要重新加载配置文件( exportfs -arv)
[root@nfs web]# cat /etc/exports
/web 192.168.1.0/24(rw,sync,all_squash)
/web 共享的目录的路径
192.168.1.0/24 允许能访问的机器的网段
(rw,sync,all_squash) 拥有的权限 rw 可以读写 sync 在host上修改了数据,里面同步到nfs服务器
all_squash 任何机器上的任何用户连接过来都看成一个普通的用户nobody对待
[root@nfs web]# exportfs -av #让共享目录生效
exporting 192.168.1.0/24:/web
六、设置共享目录的权限
[root@nfs web]# chown nobody:nobody /web
[root@nfs web]# ll -d /web
drwxr-xr-x. 2 nobody nobody 24 3月 10 16:34 /web
共享权限
linux系统里的权限
[root@nfs web]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@nfs web]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@nfs web]# getenforce
Disabled
七、客户端查看是否有权限加载目录
所有的客户端(我这里因为电脑配置受限,就用一台展示)
1.安装软件
[root@docker1 _data]# yum install nfs-utils -y
2.新建挂载目录,然后挂载
[root@docker1 ~]# mkdir /nfs-web
[root@docker1 nfs-web]# mount 192.168.1.130:/web /nfs-web/
[root@docker1 nfs-web]# df -Th|grep nfs
192.168.1.130:/web nfs4 17G 1.7G 16G 10% /nfs-web
[root@docker1 nfs-web]# cd /nfs-web/
[root@docker1 nfs-web]# ls
index.html
[root@docker1 nfs-web]# cat index.html
welcome to jiangda website
在客户机上直接创建一个服务,帮忙启动容器,并且创建卷。
然后我遇到了问题:如何让容器使用nfs共享的目录?
1.尝试使用卷对应nfs服务器共享的目录
2.容器是否会自动挂载,创建容器的时候,指定nfs服务器的路径
3.直接挂载
先解决第3点,直接挂载很简单,上操作
[root@docker1 nfs-web]# docker run -d -p 8818:80 -v /nfs-web:/usr/share/nginx/html --name jiangda-nginx-18 nginx
d9db66bcdc1304292469a4c8d24cb1c6ab355988e7fed21b8879a81a7cc5ad10
=========
经过大量的前辈资料参考和思索找到了前两个问题的解决方案!
卷模板:
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=<NFS服务器地址>,nolock,soft,rw,sync \
--opt device=:<共享目录全路径> \
<卷名>
创建一个卷底层挂载到nfs服务器192.168.1.130上的共享目录/web里。
创建卷:
[root@docker1 volumes]# docker volume create --driver local --opt type=nfs --opt o=addr=192.168.1.130,nolock,soft,rw,sync --opt device=:/web nfs-web-18
nfs-web-18
查看和检查相关信息:
[root@docker1 volumes]# docker volume ls
DRIVER VOLUME NAME
local 2ebeb836feba35cd6715daa86ef2ae0b0aae8b836435a56eee8c24a2c9613694
local 148c507c4544e0b05c484b095eb157ff43bcef3e2a8c93911c4efe57f7671793
local nfs-web-6
local nfs-web-16
local nfs-web-18
local nginx-web
[root@docker1 volumes]# docker volume inspect nfs-web-18
[
{
"CreatedAt": "2023-03-10T05:42:20-05:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/nfs-web-18/_data",
"Name": "nfs-web-18",
"Options": {
"device": ":/web",
"o": "addr=192.168.1.130,nolock,soft,rw,sync",
"type": "nfs"
},
"Scope": "local"
}
]
创建一个容器使用nfs-web-18卷
[root@docker1 volumes]# docker run -d -p 8818:80 -v nfs-web-18:/usr/share/nginx/html --name jiangda-nginx-8 nginx
265943b3b31f10ea98ddaa589707a46d374dce7bd1ab315d9156e147b93fe8a6