创建dockerSwarm nfs挂载

创建dockerSwarm nfs挂载

nfs高可用部署(lsyncd两主机双向同步)
nfs高可用部署(lsyncd三主机三向同步)

1. 通过 Volume

1.1 创建 Docker Volume

每个 swarm 节点均创建相同名称的 Docker Volume(名称为 nfs120)

docker volume create --driver local \--opt type=nfs \--opt o=addr=192.168.56.120,rw \--opt device=:/home/nfs \nfs120

1.2 查看 Volume 是否创建成功

docker volume ls
# swarm集群节点依次进行验证

在这里插入图片描述

1.3 查看 Volume 详情

docker volume inspect nfs120

在这里插入图片描述

其中:Mountpoint 为 Host 挂载点,Options 为 NFS 服务共享目录信息。

1.4 验证数据共享特性

在 docker swarm 的 master 节点执行创建服务操作

docker service rm web
docker service create \--name web \--publish 8080:80 \--mount type=volume,source=nfs120,destination=/data1 \--mode global \nginx:1.22

1.5 查看 Service 部署情况

在这里插入图片描述

1.6 验证数据共享特性 NFS 服务创建测试数据

在这里插入图片描述

1.7 Service 验证是否共享 NFS 数据

在这里插入图片描述

可见,数据被共享了,当然,你在容器中 /data1目录下产生的数据也会被持久化到 NFS 服务上。

当然,Nginx 也是正常运行的

在这里插入图片描述

2. 通过 Docker Stack

官方文档 Docker Stack CLI

通过 Volume 方式,你会发现每台 swarm 集群 work 节点都需要创建 Volume(如果 master 节点也为 work 节点,也要创建 Volume )。稍显麻烦,我们可通过 Docker Stack 方式来弥补这点不足,也就是使用 Docker Stack 方式时,就不需要手动创建 Docker Volume 了。

2.1 启动一个stack服务

官方文档:docker compose CLI

创建每个节点都启动一个容器的service

cat > docker-compose.yml  << EOF
version: "3"
services:web:image: nginx:1.22volumes:- nfs121:/dataports:- "8081:80"  deploy:    mode: global  
volumes:nfs121:driver: localdriver_opts:type: "nfs"o: "addr=192.168.56.120,rw"device: ":/home/nfs"
EOFdocker service rm web_web
# 启动一个web_web 的service
docker stack deploy -c docker-compose.yml web

2.2 查询服务及挂载volume是否存在

docker service ls
docker service ps web_web
docker volume ls
docker volume inspect web_nfs121

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3 验证数据共享特性

docker exec -it web_web.mv3jjl59io5wx0sywoghdatqs.6nom1h5z2w0r9cyykb2gse8wy /bin/bash

在这里插入图片描述

以上步骤成功!

FQA:

1.create service 创建其他节点也存在volume

docker service create --mode global \--name web122 \--publish 8082:80 \--mount 'type=volume,source=nfs122,target=/home/nfs,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/home/nfs,volume-opt=o=addr=192.168.56.120' \nginx:1.22

查看结果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

算法:进制之前的转换

1. X进制转换成十进制-V1&#xff1a; /*** 笨办法&#xff0c;从左往右开始* Tips&#xff1a;只支持正数** param num* param radix* return*/private static Integer xToTenV1(String num, Integer radix) {if (num.length() 0 || num.charAt(0) -) {throw new IllegalArg…

外贸找客户软件工具:BotMaster 18.5 Crack

BotMaster 拓展您的业务大师增加销量Whatsapp营销&#xff0c;使用 BotMaster 将您的业务提升到新的水平 - 最强大的 WhatsApp 营销软件&#xff0c;可促进销售和发展您的业务。 BotMaster 是一款革命性的 WhatsApp 营销工具&#xff0c;于 2022 年 1 月推出。这款功能强大的工…

10 大 Mac 数据恢复软件深度评测

对于任何依赖计算机获取重要文件&#xff08;无论是个人照片还是重要商业文档&#xff09;的人来说&#xff0c;数据丢失可能是一场噩梦。值得庆幸的是&#xff0c;有多种专门为 Mac 用户提供的数据恢复工具&#xff0c;可以帮助检索丢失或意外删除的文件。在本文中&#xff0c…

HNU计算机体系结构-实验3:多cache一致性算法

文章目录 实验3 多cache一致性算法一、实验目的二、实验说明三 实验内容1、cache一致性算法-监听法模拟2、cache一致性算法-目录法模拟 四、思考题五、实验总结 实验3 多cache一致性算法 一、实验目的 熟悉cache一致性模拟器&#xff08;监听法和目录法&#xff09;的使用&am…

从零构建属于自己的GPT系列4:模型训练3(训练过程解读、序列填充函数、损失计算函数、评价函数、代码逐行解读)

&#x1f6a9;&#x1f6a9;&#x1f6a9;Hugging Face 实战系列 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在PyCharm中进行 本篇文章配套的代码资源已经上传 从零构建属于自己的GPT系列1&#xff1a;数据预处理 从零构建属于自己的GPT系列2&#xff1a;模型训…

[力扣100] 10.滑动窗口的最大值

添加链接描述 class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:# 思路是使用单调队列&#xff0c;把滑动窗口中最大的元素放在最头quecollections.deque()nlen(nums)res[]# 初始化队列,队头保存最大的数的下标&#xff0c;因为需要下标来…

Spring Security 6.x 系列(10)—— SecurityConfigurer 配置器及其分支实现源码分析(二)

一、前言 在本系列文章&#xff1a; Spring Security 6.x 系列&#xff08;4&#xff09;—— 基于过滤器链的源码分析&#xff08;一&#xff09; 中着重分析了Spring Security在Spring Boot自动配置、 DefaultSecurityFilterChain和FilterChainProxy 的构造过程。 Spring …

Oauth2.0 认证

目录 前言 1.介绍 2.Oauth2.0过程详解 3.Oauth 整合到 Spring Boot 实践 4.方法及配置详解&#xff1a; 总结 前言 Oauth2.0 是非常流行的网络授权表准&#xff0c;已经广泛应用在全球范围内&#xff0c;比较大的公司&#xff0c;如腾讯等都有大量的应用场景。 1.介绍 …

ARP欺骗攻击

一.大概原理 ARP&#xff1a;address solution protocol 地址解析协议 ARP是一种基于局域网的TCP/IP协议&#xff0c;arp欺骗就是基于此协议的漏洞来达成我们的目的的&#xff0c;局域网中的数据传输并不是用ip地址传输的&#xff0c;而是靠mac地址。 我们如果出于某种目的想…

vue打包完成后出现空白页原因及解决

vue打包完成后出现空白页原因及解决 原因 资源路径不对 路由模式&#xff1a;使用history&#xff0c; 此模式上线后易出现404 解决 1、vue.config.js中配置: publicPath: ./2、在后端要求做重定向 如在nginx中使用rewrite做重定向

【Fastadmin】利用 build_select 做一个树状下拉选择框

1.效果展示 系统crud生成的下拉分类有些不是很好看&#xff0c;并且选择困难&#xff0c;看不出级差&#xff0c;效果如下&#xff1a; 经过 build_select 加工后的效果,美观好看&#xff0c;并添加上搜索功能: 2. 首先需要写一个树状图的数据格式 protected $datalist []; pu…

前沿科技与医药领域碰撞,《AI制药方法与实践》课程重磅上线

药物发现是生物学、化学、医学、药学等基础研究与工业转化的重要窗口。近年来&#xff0c;AI技术的发展&#xff0c;为高投入、高失败率的制药行业带来了全新机遇&#xff0c;或将彻底改变传统制药的研究范式。为了帮助更多人了解并掌握这一前沿技术&#xff0c;百度飞桨联合清…

LeedCode刷题---滑动窗口问题

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、长度最小的子数组 题目链接&#xff1a;长度最小的子数组 题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。…

29 水仙花数

题目描述 所谓水仙花数&#xff0c;是指一个n位的正整数&#xff0c;其各位数字的n次方和等于该数本身。 例如153是水仙花数&#xff0c;153是一个3位数&#xff0c;并且1531^35^33^3. 输入描述 第一行输入一个整数n&#xff0c;表示一个n位的正整数。n在3到7之间&#xff0c;…

uniapp各种小程序分享 share - 主要流程 - 微信、抖音、快手、qq

参考 小程序环境 分享 | uni-app官网uni-app,uniCloud,serverless,分享,uni.share(OBJECT),分享到微信聊天界面示例代码,分享到微信朋友圈示例代码,uni.share 在App端各社交平台分享配置说明,uni.shareWithSystem(OBJECT),plus.share.sendWithhttps://uniapp.dcloud.net.cn/a…

MCS-51系列与AT89C5x系列单片机的介绍与AT系列的命名规则

MCS-51系列与AT89C5x系列单片机 主要涉及MCS-51系列与AT89C5x系列单片机的介绍与AT系列单片机的命名规则 文章目录 MCS-51系列与AT89C5x系列单片机一、 MCS-51系列单片机二、AT89C5x系列单片机2.1 AT89C5x/AT89S5x系列单片机的特点2.2 AT89系列单片机的型号说明2.2.1 前缀2.2.2…

数组区段的最大最小值

题干 本题要求实现一个函数&#xff0c;找出数组中一部分数据的最大值和最小值。 题目保证没有无效数据。 函数接口定义&#xff1a; void sublistMaxMin ( int* from, int* to, int* max, int* min ); 其中 from和to都是用户传入的参数&#xff0c;分别存放数组部分数据的起…

深度绑定的二维码

南京西祠 500 万股股份被以 1 元价格挂牌转让。 唏嘘不已&#xff0c;就像现在的孩子们都知道玩抖音&#xff0c;我们那个时代&#xff0c;西祠胡同就是互联网的代名词。在一个叫做西祠胡同的地方&#xff0c;住着一群村里的年轻人&#xff0c;他们痛并快乐着&#xff0c;渴望…

节省时间,提高效率:深入解析MyBatis Plus

1. MyBatis Plus 概述 将Mybatis 通用Mapper PageHelper 升级成 MyBatis Plus 1.1 简介 官网&#xff1a;https://baomidou.com/ 参考教程&#xff1a;https://baomidou.com/pages/24112f/ MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#…

QT之常用按钮组件

QT之常用按钮组件 导入图标 布局 显示选中 实验结果 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }void Widget::on_push…