卷与nfs实现多台主机容器之间的数据共享

容器存放数据到宿主机里

数据持久化:永久保存  数据共享:容器和容器 容器和宿主机

就是宿主机里的文件夹

/var/lib/docker/volumes

docker 容器:容器运行起来是一个进程,进程的数据默认都在内存里,内存里的数据停电容易丢失,容器里运行的app的数据需要永久保存(持久化),存放磁盘里就可以永久保存

案例:

    1.在一台宿主机上实现容器和宿主机之间的数据共享

    2.在一台宿主机上实现多个容器之间数据共享

    3.使用nfs服务器实现多个宿主机上的容器之间的数据共享

[root@docker volumes]# docker  volume create  sc

[root@docker volumes]# docker  volume ls

[root@docker volumes]# cd /var/lib/docker/volumes/

[root@docker volumes]# ls

457b449740847795c328d91bcaf2e8dc7695d959ed521dc4d3be944f63cb0e00  backingFsBlockDev    metadata.db  sc

在volumes下会自动建立一个sc文件夹  为空

本地的虚拟机:

1.docker run -d -p 7070:80 --name sc_lilin --mount source=sc,target=/usr/share/nginx/html nginx

source=sc-vol    源  sc-vol是卷的名字

target=/usr/share/nginx/html  容器里的目标文件夹

         nginx默认的存放网站网页的地方---》网页根目录

[root@docker _data]# mkdir /data

2. docker run -d -p 7071:80 --name sc_lilin-2 -v /data:/c_data nginx

可以进入容器 数据是同步的

3.[root@docker data]# docker volume create xiefengbao

[root@docker data]# docker run -d -p 7073:80 --name xiefengbao-1 -v xiefengbao:/usr/share/nginx/html nginx 可读可写

[root@docker data]# cd /var/lib/docker/volumes/xiefengbao/_data/

[root@docker _data]# ls

50x.html  index.html

[root@docker _data]# docker volume create zhangjiahui

[root@docker _data]# docker run -d -p 7074:80 --name zhangjiahui-1 -v zhangjiahui:/usr/share/nginx/html:ro  nginx 只读(限制容器里的程序 宿主机还是可以改)

在云服务器里启动mysql的容器 创建一个卷mysql_data用来存放mysql数据库的数据

root@aliyun-sz:~# docker volume create mysql_data

root@aliyun-sz:~# docker run -d -p 33069:3306 --name duan-mysql-1  -e MYSQL_ROOT_PASSWORD='Sctl@123456789' -v mysql_data:/var/lib/mysql  mysql:5.7.41

1e2a2d37316ab97ee2165120f15861ddcd4ceaf56fd0627e21d197e4bdd6c855

root@aliyun-sz:~# cd /var/lib/docker/volumes/mysql_data/_data/

root@aliyun-sz:/var/lib/docker/volumes/mysql_data/_data# ls

auto.cnf    ca.pem           client-key.pem  ibdata1      ib_logfile1  mysql       performance_schema  public_key.pem   server-key.pem

ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile0  ibtmp1       mysql.sock  private_key.pem     server-cert.pem  sys

如何访问到我们的云服务器里的mysql?

    使用工具SQLyog或者mysql客户机段、pycharm等

    需要在云服务器的安全组里开放33069端口

[root@docker _data]# mysql -h 120.24.223.108 -P 33069 -uroot -p'Sctl@123456789' 

Welcome to the MariaDB monitor.  Commands end with ; or \g.

卷里有内容的情况:容器使用卷的时候,本质就是容器挂载了宿主机的某个文件夹到容器里,所以最开始的时候以宿主机卷里的内容为主,挂载后,容器可以对卷里的数据进行修改。

卷里没有内容的情况: 只是一个空文件夹,容器启动的时候也会挂载卷的这个空文件夹,但是会把容器里的数据写到卷里。

挂载后数据同步的

多台宿主机里的多个容器之间的数据共享

NFS 服务器:  是一台可以共享文件的机器

network file system 网络文件系统: 在网络上共享文件的服务  --》多台服务器看到相同的内容--》数据一致性、数据共享

为什么选择使用nfs服务器来解决数据一致性问题?

    nfs的优点: 安装方便,成本低廉 

    nfs的缺点:传统的网络,有时延 --》使用万兆网络

               单点故障 --》定时备份   或高可用 数据同步sync  异步async

数据读写并发特别大和速度要求快的场景,建议SAN

存储区域网络 (Storage Area Network, SAN) 是企业最常用的存储网络架构,要求高吞吐量和低延迟的业务关键型业务往往采用这类架构运行。如今,采用全闪存存储的 SAN 部署数量增速迅猛。与旋转磁盘相比,全闪存存储可提供更出色的性能、稳定一致的低延迟以及更低的总成本。SAN 将数据存储在集中式共享存储中,使企业能够运用一致的方法和工具来实施安全防护、数据保护和灾难恢复。


1.搭建好nfs服务器

[root@master 55]# yum install nfs-utils -y

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

[root@master 55]# service nfs restart

[root@docker _data]# systemctl enable nfs

Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.


2.新建共享目录和index.html网页

[root@master 55]# mkdir  -p /sc/web

[root@master 55]# cd /sc/web/

[root@master web]# echo "welcome to sanchuang" >index.html


3.设置共享目录

[root@master 55]# vim /etc/exports

/sc/web   192.168.223.0/24(rw,no_root_squash,sync)

[root@master 55]# chmod 777 /sc/web   在linux系统里给其他机器上的用户写的权限


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

[root@nfs-server web]# exportfs -rv 输出所有的共享目录

exporting 192.168.2.0/24:/sc/web

[root@master web]# service nfs restart  重启nfs服务

Redirecting to /bin/systemctl restart nfs.service

设置nfs开机启动

[root@nfs-server ~]# systemctl enable nfs

Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.


在docker集群里的任意一个节点服务器上测试能否挂载nfs服务器共享的目录 这里使用的ubuntu虚拟机

[root@scdocker ~]# mkdir  /test  新建挂载点目录/test

centos的系统,安装nfs-utils  安装软件包的目的是能够支持nfs协议

ubuntu的系统  安装apt-get install nfs-kernel-server -y

root@sc:~# mount 192.168.205.137:/sc/web  /test

在ubuntu 宿主机上创建支持nfs功能的卷 nfs-web-1

--opt  o=addr=192.168.159.142  指定nfs服务器的地址

--opt  device=:/sc/web 指定nfs服务器上共享的文件夹的路径

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

在docker宿主机上都可以启动容器,使用刚刚创建的nfs-web-1卷

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

00a1bfbcbc47c11e8d768dc0378df8ec27e9ae1bde3c78f63e96201ea9a84111

打开浏览器去访问

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙界面开发

界面开发 //构建 → 界面 build() {//行Row(){//列Column(){//文本 函数名(参数) 对象.方法名(参数) 枚举名.变量名Text(this.message).fontSize(40)//设置文本大小.fontWeight(FontWeight.Bold)//设置文本粗细.fontColor(#ff2152)//设置文本颜色}.widt…

邮件流量分析

邮件流量分析是指对邮件系统中进出的邮件数量、类型、流向以及相关性能指标进行统计和评估的过程。这种分析有助于优化邮件系统的性能、检测异常活动、防止垃圾邮件和网络攻击,以及改善邮件营销策略。邮件流量分析可以分为几个主要方面: 邮件统计&#x…

MMROTATE的混淆矩阵confusion matrix生成

mmdetection中加入了混淆矩阵生成并可视化的功能,具体的代码在tools/analysis_tools/confusion_matrix.py。 mmrotate由于主流遥感数据集中的DOTA数据集标注格式问题,做了一些修改,所以我们如果是做遥感图像检测的Dota数据集的混淆矩阵&…

安装CUDA Cudnn Pytorch(GPU版本)步骤

一.先看自己的电脑NVIDIA 支持CUDA版本是多少? 1.打开NVIDIA控制面板 2.点击帮助---系统信息--组件 我的支持CUDA11.6 二.再看支持Pytorch的CUDA版本 三.打开CUDA官网 下载CUDA 11.6 下载好后,安装 选择 自定义 然后安装位置 (先去F盘…

Python - conda使用大全

如何使用Conda? 环境 创建环境 conda create -n spider_env python3.10.11查看环境 conda env listconda info -e激活环境 conda activate spider_env退出环境 conda deactivate删除环境 conda env remove -n spider_env包 导出包 说明:导出当前虚拟…

孙健提到的实验室的研究方向之一是什么?()

孙健提到的实验室的研究方向之一是什么?() 点击查看答案 A.虚拟现实B.环境感知和理解 C.智能体博弈D.所有选项都正确 图灵奖是在哪一年设立的?() A.1962B.1966 C.1976D.1986 孙健代表的实验室的前身主要研究什么?&…

【ffmpeg命令入门】ffplay常用命令

文章目录 前言ffplay的简介FFplay 的基本用法常用参数及其作用示例 效果演示图播放普通视频播放网络媒体流RTSP 总结 前言 FFplay 是 FFmpeg 套件中的一个强大的媒体播放器,它基于命令行接口,允许用户以灵活且高效的方式播放音频和视频文件。作为一个简…

英语中英镑与美元表达方式的异同点(英镑£(GBP)和美元$(USD))便士p(pence),美分¢(cents)

文章目录 英语中英镑与美元表达方式的异同点分析货币符号与位置货币符号位置规则 数字格式与分隔数字表示小数点使用 小数单位英镑的便士美元的分 示例分析(😵)示例1:高额交易示例2:零售价格 总结 英语中英镑与美元表达…

自定义QDialog使用详解

自定义QDialog使用详解 一、创建 QDialog 对象二、QDialog设置布局三、QDialog控制模态行为3.1 模态和非模态区别3.2 QDialog的模态使用四、使用 QDialogButtonBox五、处理对话框的结果六、使用 QDialog 的信号和槽QDialog是Qt框架中用于创建对话框窗口的基本类。对话框窗口通常…

uniapp原生插件开发实战——iOS打开文件到自己的app

用原生开发获取文件的名称、路径等能力封装为一个插件包供前端使用 首先根据ios插件开发教程,创建一个插件工程,template 选framework 开始编写代码: iOS 9 及以下版本会调用以下方法: - (BOOL)application:(UIApplication *_N…

【数据分析详细教学】全球气温变迁:一个多世纪的数据分析

全球气温变迁:一个多世纪的数据分析 1. 数据集选择与获取 数据可以从NASA的GISTEMP数据集获取,通常提供的格式有TXT和CSV。我们假设数据是以CSV格式提供。 2. 数据预处理 使用Python的pandas库读取数据并进行预处理。 import pandas as pd# 加载数…

C#知识|账号管理系统:修改登录密码界面的UI设计

哈喽,你好啊!我是雷工! 本节记录添加修改登录密码界面的过程,以下为练习笔记。 01 效果演示 演示跳转打开修改登录密码子窗体效果: 02 添加窗体 在UI层添加一个Windows窗体,命名为:FrmModifyPwd.cs; 03 设置窗体属性 按照下表的内容设置窗体的相关属性: 设置属性 …

物联网架构之Hadoop

一:系统环境设置(所有节点都设置) 1:关闭selinux和防火墙 setenforce 0 sed -i /^SELINUX/s/enforcing/disabled/ /etc/selinux/config systemctl stop firewalld systemctl disable firewalld 2:为各个节点设置主机名…

编译期计算

关于编译期计算&#xff0c;直接能够想到的应用是决定是否启用某个模板&#xff0c;或者多个模板之间做选择。但如果有足够多的信息&#xff0c;编译器甚至可以计算控制流的结果。 模板元编程 模板元编程的简单例子&#xff0c;如下&#xff1a; #include <iostream>te…

vue練習--prop

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Prop練習</title> <!-- 开发环境版本…

mysql面试(二)

前言 这是mysql面试基础的第二节&#xff0c;主要是了解一下mysql数据更新的基本流程&#xff0c;还有三大日志的作用。但是具体的比如undolog是如何应用在mvcc机制中的&#xff0c;由于篇幅问题就放在下一在章节 数据更新流程 上面是说了更新真正数据之前的大致流程&#x…

requets库传data和传json的区别

传data和传json的qubie 被测对象&#xff0c;白月黑羽系统 系统下载地址&#xff1a; https://www.byhy.net/prac/pub/info/bysms/ 测试用例下载地址&#xff1a; https://cdn2.byhy.net/files/selenium/testcases.xlsx 一、传data import json import requests import pytes…

7、Qt5开发及实列(笔记3-系统操作)

说明&#xff1a;此示例包含了基本的常使用的系统操作 效果如下: mainwindos.cpp #pragma execution_character_set("utf-8") #include "mainwindow.h"#include <QDesktopWidget> #include <QApplication> #include <QHostInfo> #in…

uni-app renderjs 的使用

在 uni-app 中使用 renderjs 的一般步骤如下&#xff1a; 在原有 <script> 下方添加一个新的 <script> 标签&#xff0c;用于编写 renderjs 代码。其中&#xff0c; lang 属性需设置为 "renderjs" &#xff0c; module 属性的值可以任意指定&#xff…

迁移学习:跨领域知识迁移的艺术

迁移学习&#xff1a;跨领域知识迁移的艺术 在机器学习的世界里&#xff0c;迁移学习&#xff08;Transfer Learning&#xff09;是一种强大的技术&#xff0c;它允许模型将在一个任务上学到的知识迁移到另一个相关任务上。这种方法在数据稀缺或计算资源受限的情况下尤其有用。…