Docker Swarm持久化

Docker Swarm持久化

1 简介

Docker Swarm持久化有bind、volume和NFS三种方式,bind和volume两种方式适合挂载单个宿主机,不适合集群;NFS适合集群服务,但需要安装NFS系统。

注意:Docker Swarm需要先安装集群。

由Docker Swarm构建的集群,使用filebrowser测试。

注意:使用搭建filebrowser集群过程中,会发现刷新一次就要登录一次,因为构建的集群中每个容器副本登录都是独立的,但是集群中设置了负载均衡,所以,每刷新一次访问的容器副本不一样,导致刷新一次会登录一次。

序号主机名IP备注
1master192.168.108.201
2node1192.168.108.201

2 使用bind方式

注意:Swarm使用bind挂载目录前,需要宿主机上的相应文件系统的数据路径必须存在。系统可以在全部节点都可以访问(如果只有1个副本,也可以在全部节点上访问)。

2.1 使用命令创建

在201和202两台宿主机系统上,创建以下目录和文件,为下面创建服务使用。

注意:⚠️ 下面的文件需要自己创建一个filebrowser容器,然后将其中的文件放到下面的目录中,因为自己创建的是空文件,容器加载过程中会出错。

--/home/filebrowser
----/srv
----/database.db
----/.filebrowser.json

创建集群,持久化使用--mount type=bind参数,注意:此处的是2个副本,如果3个副本会出现(403)问题,因为是从容器中将配置复制过来的,所以出现403错误,如果不绑定配置文件,docker swarm自己配置不会出现上面的问题。

docker service create \
--name filebrowser \
--replicas 2 \
--publish 8080:80 \
--env PGID=$(id -g) \
--env PUID=$(id -u) \
--mount type=bind,src=/home/filebrowser/srv,dst=/srv \
--mount type=bind,src=/home/filebrowser/database.db,dst=/database.db \
--mount type=bind,src=/home/filebrowser/.filebrowser.json,dst=/.filebrowser.json \
filebrowser/filebrowser:latest

查看信息

# 查看swarm的服务
docker service ls

# 查看当前节点的服务
docker node ps

2.2 使用Docker Stack创建

docker-compose.yml

version: "3.7"
services:
  filebrowser:
    image: filebrowser/filebrowser:latest
    hostname: filebrowser
    ports:
      - 8080:80
    deploy:
      mode: replicated
      replicas: 2
    volumes:
      - /home/filebrowser/srv:/srv
      - /home/filebrowser/database.db:/database.db
      - /home/filebrowser/.filebrowser.json:/.filebrowser.json

执行命令

# 执行命令
docker stack deploy -c docker-compose.yml filebrowser-stack

# 查看服务
docker stack ls	

# 列出stack中的任务
docker stack ps filebrowser-stack

# 删除
docker stack rm filebrowser-stack

# 查看服务日志
docker service logs filebrowser-stack_filebrowser

2.3 执行结果

使用账号登录filebrowse系统,从结果中可以看到,由于在上传数据时,上传到了不同的宿主机上,所以数据不一致。
在这里插入图片描述

3 使用volume方式

注意:使用volume方式创建的目录会被映射到宿主机的/var/lib/docker/volumes下,可以设置挂载目录的权限。

3.1 使用命令创建

创建volume

也可以直接借用docker run的-v参数设置数据卷,不在赘述。

# 创建数据卷
docker volume create volume_filebrowser

# 查看数据卷
docker volume ls

# 查看详情
docker volume inspect volume_filebrowser

# 删除卷
docker volume rm volume_filebrowser

# 清空所有无用数据卷,慎重操作
docker volume prune

使用volume持久化

注意:如果没有使用上面的命令创建volume,下面的命令会自动在宿主机上创建volume,上面的步骤可以省略。由于volume一般挂载的是目录,不挂载文件,所以此处没有挂载配置文件,不会出现上面的403错误。

docker service create \
--name filebrowser \
--replicas 3 \
--publish 8080:80 \
--env PGID=$(id -g) \
--env PUID=$(id -u) \
--mount type=volume,src=volume_filebrowser,dst=/srv \
filebrowser/filebrowser:latest

3.2 使用Docker Stack创建

docker-compose.yml

version: "3.7"
services:
  filebrowser:
    image: filebrowser/filebrowser:latest
    hostname: filebrowser
    ports:
      - 8080:80
    deploy:
      mode: replicated
      replicas: 3
    volumes:
      - volume_filebrowser:/srv
volumes:
  volume_filebrowser:
    driver: local

直接执行下面命令即可。

docker stack deploy -c docker-compose.yml filebrowser-stack

3.3 执行结果

在这里插入图片描述

4 使用nfs方式

4.1 创建nfs目录

注意:需要先安装nfs系统,然后在202节点上创建nfs目录

# 创建目录
mkdir -p /data/nfsdata
 
# 添加权限
chmod 777 /data/nfsdata

# 编辑文件
vim /etc/exports
 
# 添加以下内容
/data/nfsdata  192.168.108.*(rw,sync,no_subtree_check)
 
# 重启服务
systemctl restart nfs
 
# 查看共享目录
showmount -e 192.168.108.202

# 返回值如下,表示创建成功
Export list for 192.168.108.202:
/data/nfsdata 192.168.108.*

4.2 使用命令创建

创建volume

# 创建数据卷
docker volume create \
--name volume_filebrowser \
--opt "type=nfs" \
--opt "o=addr=192.168.108.202,rw" \
--opt "device=:/data/nfsdata"

使用volume持久化

注意:如果没有使用上面的命令创建volume,下面的命令会自动在宿主机上创建volume,上面的步骤可以省略。

docker service create \
--name filebrowser \
--replicas 3 \
--publish 8080:80 \
--env PGID=$(id -g) \
--env PUID=$(id -u) \
--mount type=volume,src=volume_filebrowser,dst=/srv \
filebrowser/filebrowser:latest

4.3 使用Docker Stack创建

docker-compose.yml

version: "3.7"
services:
  filebrowser:
    image: filebrowser/filebrowser:latest
    hostname: filebrowser
    ports:
      - 8080:80
    deploy:
      mode: replicated
      replicas: 3
    volumes:
      - volume_filebrowser:/srv
volumes:
  volume_filebrowser:
    driver: local
    driver_opts:
      type: "nfs"
      o: "addr=192.168.108.202,rw"
      device: ":/data/nfsdata"

直接执行下面命令即可。

docker stack deploy -c docker-compose.yml filebrowser-stack

4.4 执行结果

由于使用的是nfs,挂载的是同一个目录,所以两个系统的内容是相同的。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI作画工具介绍

目录 1.概述 2.Stable Diffusion 2.1.诞生背景 2.2.版本历史 2.3.优点 2.4.缺点 2.5.应用场景 2.6.未来展望 3.Midjourney 3.1.诞生背景 3.2.版本历史 3.3.优点 3.4.缺点 3.5.应用场景 3.6.未来展望 4.总结 1.概述 AI作画工具是一种运用人工智能技术&#xff…

JAVA网络编程,反射及注解知识总结

文章目录 网络编程软件架构三要素IP端口号协议UDP协议发送数据接收数据三种通信方式 TCP协议客户端服务器端三次握手四次挥手 反射获取字节码文件获取构造方法获取成员变量获取成员方法反射的作用 动态代理注解作用格式使用位置注解的原理常见注解元注解自定义注解解析注解 网络…

【OC】类与对象

类与对象 定义类接口部分定义成员变量方法说明实现部分 对象的产生与使用对象与指针self关键字避免重复创建 id类型方法详解方法的所属性形参个数可变的方法 成员变量成员变量及其运行机制多个实例中内存示意图模拟类变量单例模式 类是面向对象的重要内容,我们可以把…

【问题解决】adb remount 失败或刷机无法连接设备(KaiOS)

问题描述 1、设备无法adb remount成功, 2、通过fastboot无法识别设备,一直卡住 3、已经识别到9008端口,但是设备与刷机工具connect fail,甚至软件crash 解决方案 1、安装高通驱动工具:QDLoder HS-USB Driver QDLoade…

【工作必备知识】Linux磁盘I/O故障排查分析定位 iostat 介绍

【工作必备知识】Linux磁盘I/O故障排查分析定位 iostat 介绍 大家好,我是秋意零。 前言:今天,介绍Linux磁盘I/O故障排查时,必备命令iostat。该命令是监视系统I/O设备使用负载,它可以实时监视IO设备,从而帮…

Python数据分析II

目录 1.HS-排序返回前n行 2.HS-相关性 3.缺失值处理 4.时间 5.时间索引 6.分组聚合 7.离散分箱 8.Concat关联(索引关联) 9.Merge关联(字段关联) 10.join合并(左字段,右索引) 11.行列转置及透视表 12.数据可视化-面向过程 13.数据可视化-面向对象 14.快速生成柱状…

10秒钟docker 安装Acunetix

1、拉取镜像: 2、查看镜像: [rootdns-server ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/hiepnv/acunetix latest f8415551b8f4 2 months ago 1.98GB 3、运行镜像: …

msfconsole利用Windows server2008cve-2019-0708漏洞入侵

一、环境搭建 Windows系列cve-2019-0708漏洞存在于Windows系统的Remote Desktop Services(远程桌面服务)(端口3389)中,未经身份验证的攻击者可以通过发送特殊构造的数据包触发漏洞,可能导致远程无需用户验…

已解决Error || IndexError: index 3 is out of bounds for axis 0 with size 3

已解决Error || IndexError: index 3 is out of bounds for axis 0 with size 3 原创作者: 猫头虎 作者微信号: Libin9iOak 作者公众号: 猫头虎技术团队 更新日期: 2024年6月6日 博主猫头虎的技术世界 🌟 欢迎来…

Android安全开发之 Provider 组件安全

Android系统中的Content Provider组件是一种用于在不同应用之间共享数据的机制。它提供了一种安全、可控的方式,允许应用访问其他应用的数据。然而,如果Provider组件的安全措施没有得到妥善实现,则可能会导致严重的安全漏洞,例如数…

电阻常见失效模式

电阻常见失效模式: 电阻器由于结构较为简单,工艺成熟,通常失效率相对较低。器失效主要表现为以下几种: 阻值漂移:老化后通常发生;(通过老化试验进行筛选,规避该问题) …

万能表单与AI的完美融合,打造个性化AI小程序

在人工智能技术日益成熟的今天,如何将AI智能与用户界面无缝结合,已成为软件开发领域的新挑战。MyCms 以其创新的“万能表单结合AI”功能,为开发者提供了一个全新的解决方案,让个性化AI小程序的开发变得前所未有的简单和高效。 一、…

OBS 录屏软件:录制圆形头像画中画,设置卡通人像(保姆级教程,有步骤图,建议收藏)

Mac分享吧 文章目录 一、OBS录屏软件 圆形头像画中画效果注意:圆形画中画仅需要在软件中设置一次,每次录制,使用带有圆形头像画中画的场景 录制视频即可。该场景不可删除!!!若删除,则需要重新设…

奇安信停服,国内还有什么可用的高防么?

这里写自定义目录标题 背景DDOS怎么办?方案推荐总结 背景 继前段时间百度云加速通知免费服务,6月底奇安信也将停止服务,到时候国内将几乎不存在免费好用的高防CDN了;类似的事情还有阿里云和腾讯云的一年期免费SSl证书也都停止供应…

day31贪心算法part01| 理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和

**455.分发饼干 ** 视频讲解 | 力扣链接刚开始想到的&#xff0c;但是这样太暴力了&#xff0c;太笨了 class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {// 胃口g 饼干尺寸sint result 0;sort(s.begin(), s.end());…

苍穹外卖笔记-08-套餐管理-增加,删除,修改,查询和起售停售套餐

套餐管理 1 任务2 新增套餐2.1 需求分析和设计接口设计setmeal和setmeal_dish表设计 2.2 代码开发2.2.1 根据分类id查询菜品DishControllerDishServiceDishServiceImplDishMapperDishMapper.xml 2.2.2 新增套餐接口SetmealControllerSetmealServiceSetmealServiceImplSetmealMa…

通过 Webhook 将消息推送至钉钉、飞书、企业微信

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 当我们在 VPS 与 NAS 上部署了大量的应用&#xff0c;如何优雅的接收推送消息就成了一个大问题&#xff0c;在“上古时代”最常用的莫过于 SMTP 直接发送邮件进行通知&#xff0c;但当推送的消息过多且频繁…

《编程小白变大神:DjangoBlog带你飞越代码海洋》

还在为你的博客加载速度慢而烦恼&#xff1f;DjangoBlog性能优化大揭秘&#xff0c;让你的网站速度飞跃提升&#xff01;本文将带你深入了解缓存策略、数据库优化、静态文件处理等关键技术&#xff0c;更有Gunicorn和Nginx的黄金搭档&#xff0c;让你的博客部署如虎添翼。无论你…

认识Spring中的BeanFactoryPostProcessor

先看下AI的介绍 在Spring 5.3.x中&#xff0c;BeanFactoryPostProcessor是一个重要的接口&#xff0c;用于在Spring IoC容器实例化任何bean之前&#xff0c;读取bean的定义&#xff08;配置元数据&#xff09;&#xff0c;并可能对其进行修改。以下是关于BeanFactoryPostProce…