目录


新装一台CentOS 7


一.安装软件包

yum install -y nfs-utils

为了下载速度快,更改阿里云镜像,可以直接访问我另一篇博客,不走弯路!

二、启动服务(考虑开机启动问题)输入以下两条命令:
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

centos 搭建nexus centos 搭建nas_nginx

查看端口映射情况:

centos 搭建nexus centos 搭建nas_docker_02

四、创建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

八、访问验证

修改nfs服务器的web内容:

centos 搭建nexus centos 搭建nas_centos 搭建nexus_03


浏览器访问192.168.1.132:8818

centos 搭建nexus centos 搭建nas_nginx_04


成功!