docker学习笔记(三)搭建NFS服务实验

devtools/2024/10/21 3:47:36/

目录

什么是NFS

简单架构​编辑

一.搭建nfs服务器

二.新建共享目录和网页文件

 三.设置共享目录

 四:创建使用nfs共享目录的卷

五:创建容器使用nfs-web-1卷

六:测试访问

七:是否同步测试


什么是NFS

NFS 服务器:network file system 网络文件系统  NFS 是一种用于在网络上共享文件系统的协议,允许多台计算机之间共享文件。通过创建这样一个 NFS 卷,可以在 Docker 容器之间共享持久化数据,以及与其他计算机上的文件系统进行数据交换。

简单架构

准备好2台机器

一台做nfs使用,一台是docker宿主机

在nfs上创建一个共享目录给宿主机使用,并且修改/etc/export配置文件共享出去,再在docker上创建一个卷,使用nfs协议挂在到docker宿主机上。卷相当于是桥梁,将宿主机和nfs服务器连接起来

一.搭建nfs服务器

1.更改主机名

[root@web-server ~]# hostnamectl set-hostname  nfs
[root@web-server ~]# su

2.关闭防火墙

[root@nfs ~]# service  firewalld  stop
Redirecting to /bin/systemctl stop firewalld.service
[root@nfs ~]# systemctl disable firewalld

[root@nfs ~]# getenforce

Disabled                   ##此时显示防火墙是禁用的了

 3.安装

注意:建议docker集群内的所有的节点都安装nfs-utils软件,因为节点服务器里创建卷需要支持nfs网络文件系

[root@docker _data]#  yum install  nfs-utils -y

[root@docker _data]#  yum install  nfs-utils -y

4.开启nfs以及开机启动

[root@nfs ~]# service nfs  start  启动nfs服务
Redirecting to /bin/systemctl start nfs.service
[root@nfs ~]# systemctl enable nfs  设置nfs服务开机启动

二.新建共享目录和网页文件

/web_data共享目录和index.html网页文件

[root@nfs ~]# mkdir /web_data
[root@nfs ~]# cd /web_data
[root@nfs web_data]# ls
feng.jpg  index.html                      ##/web_data的文件来自192.168.203.128的宿主
[root@docker web_data]# cd _data/
[root@docker _data]# ls
feng.jpg  index.html
[root@docker _data]# scp -r *  192.168.203.146:/web_data 

这里之前已经写好了一个简单网页文件index.html并放置了图片 ,scp直接远程拿取文件过来,再输入密码就可以拷贝过来

 三.设置共享目录

1.编辑配置文件

 vim /etc/exports   这是nfs的共享配置文件

/web_data    192.168.203.0/24(rw,all_squash,sync)  将这条命令写到配置文件中

rw 是读写权限 read write

ro 是只读权限 readonly

 sync:同步:容器写数据到卷里面,卷再把数据传给nfs同时完成 --》优点:不丢失数据

async:异步 : 可以错开时间,分开进行,有时间差  --》异步效率高(可以错开时间,不耽误时间),有可能会丢失数据

no_root_squash  其他机器的root用户连接过来nfs服务的时候,把它当做root用户对待

root_squash     其他机器的root用户连接过来nfs服务的时候,不把它当做root用户对待,把它当做普通的用户对待(nfsnobody)

all_squash     其他机器的所有的用户(任意用户)连接过来nfs服务的时候,把它当做普通的用户对待(nfsnobody)

2.给予权限

因为考虑到给其他的机器读写的权限,需要在linux系统里也要给与读写的权限

因为/web_data是属于root用户所有,但是nfs服务是以nfsnobody的用户身份去访问/web_data目录的,不然就没有写的权限,只有读的权限

[root@nfs web_data]# ll -d /web_data/
drwxr-xr-x 2 root root 40 1月  11 15:09 /web_data/
[root@nfs web_data]# chmod  777 /web_data/
[root@nfs web_data]# ll -d /web_data/
drwxrwxrwx 2 root root 40 1月  11 15:09 /web_data/

刷新nfs或者重新输出共享目录

[root@nfs web_data]# service nfs restart  刷新nfs服务也会重新输出共享目录
Redirecting to /bin/systemctl restart nfs.service

 四:创建使用nfs共享目录的卷

docker宿主机上操作创建卷,这个卷

[root@docker test-nfs]# docker  volume  create  --driver local  --opt type=nfs --opt o=addr=192.168.203.146,nolock,soft,rw,sync  --opt device=:/web_data  nfs-web-1

在 Docker 中创建一个名为 nfs-web-1 的卷,并将其配置为使用 NFS作为驱动程序。

同时NFS这个驱动程序的配置选项如下:

五:使用nfs-web-1卷

[root@docker test-nfs]# docker run -d  --name wangyong-nginx-1 -p 7001:80  -v nfs-web-1:/usr/share/nginx/html  nginx

这条命令的作用是创建并运行一个名为 "wangyong-nginx-1" 的容器,该容器基于 Nginx 镜像,在主机的 7001 端口上提供 Web 服务,并通过卷 "nfs-web-1" 将主机上的目录挂载到容器中。

[root@docker test-nfs]# docker run -d  --name wangyong-nginx-2 -p 7002:80  -v nfs-web-1:/usr/share/nginx/html  nginx

[root@docker test-nfs]# docker run -d  --name wangyong-nginx-3 -p 7003:80  -v nfs-web-1:/usr/share/nginx/html  nginx

六:测试访问

在windows的主机上访问docker宿主机的7001 7002 7003端口

七:是否同步测试

[root@nfs web_data]# pwd
/web_data
[root@nfs web_data]# ls
feng.jpg  index.html  niweinan
[root@nfs web_data]# vim index.html 
<html>
<title>welcome to sanchuang</title>
<body><p> welcome to hunan changsha sanchuang</p><h1><p> PhoneNO:18908495097</p></h1><h1><p> QQ:695811769</p></h1><img src=feng.jpg width=400>
</body>
</html>

这就是写的html文件,图片是安装软件之后直接在windows桌面拖拽到当前目录过来的

修改一下文件,加入QQ的信息再用第三个容器去访问可以看到有同步的更改,测试结果如图


http://www.ppmy.cn/devtools/38687.html

相关文章

Vitis HLS 学习笔记--MAXI手动控制突发传输

目录 1. 简介 2. MAXI 突发传输详解 2.1 突发传输的前置条件 2.2 hls::burst_maxi 详解 2.2.1 基本知识 2.2.2 hls::burst_maxi 构造函数 2.2.3 hls::burst_maxi 读取方法 2.2.4 hls::burst_maxi 写入方法 2.3 示例一 2.4 示例二 3. 总结 1. 简介 这篇文章探讨了在…

第4章 Vim编辑器与Shell命令脚本

第4章 Vim编辑器与Shell命令脚本 1. Vim文本编辑器2. 编写Shell脚本2.2 接收用户的参数2.3 判断用户的参数 3. 流程控制语句3.1 if条件测试语句3.2 for条件循环语句3.3 while条件循环语句3.4 case条件测试语句 4. 计划任务服务程序复习题 1. Vim文本编辑器 Vim编辑器中设置了三…

Java 高级面试问题及答案 更新(一)

Java 高级面试问题及答案 1. 请解释Java内存模型以及它在多线程编程中的重要性。 答案&#xff1a; Java内存模型&#xff08;Java Memory Model, JMM&#xff09;定义了Java程序在执行时&#xff0c;变量在内存中的存储和访问规则。它确保了在多线程环境中&#xff0c;各个线…

系统安全:物联网安全面试

文章目录 岗位要求 岗位要求

gige工业相机突破(二,c++实现)

调试通过别人的代码&#xff0c;gige 500万工业相机海康。 如果你下载了open gige vision 代码&#xff0c;你可以参考我下面的代码&#xff08;可以打开相机并取像显示&#xff09;&#xff1a; /* if(argc ! 3) throw std::runtime_error(str(boost::format("Usa…

html--瀑布效果

<!doctype html> <html> <head> <meta charset"utf-8"> <title>瀑布效果</title><style> body {background: #222;color: white;overflow:hidden; }#container {box-shadow: inset 0 1px 0 #444, 0 -1px 0 #000;height: 1…

数据结构(四)抽象数据类型

数据结构&#xff08;四&#xff09;抽象数据类型 要点&#xff1a;数据结构是&#xff0c;数据对象&#xff0c;数据对象的操作和如何使用数据对象的操作 思考&#xff1a;什么是抽象数据类型 01 数据对象的定义 1.逻辑结构&#xff1a; 线性结构&#xff08;一对一&…

嘎嘎好用的虚拟键盘第二弹之中文输入法

之前还在为不用研究输入中文而暗自窃喜 这不新需求就来了&#xff08;新需求不会迟到 它只是在路上飞一会儿&#xff09; 找到了个博主分享的代码 是好使的 前端-xyq 已经和原作者申请转载了 感谢~~ 原作者地址&#xff1a;https://www.cnblogs.com/linjiangxian/p/16223681.h…