Docker Swarm NFS 数据持久化存储

这篇具有很好参考价值的文章主要介绍了Docker Swarm NFS 数据持久化存储。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

docker swarm nfs volume,云原生,docker,linux,运维



一、Swarm 集群部署

可参考我前面的博客《基于 Linux 的 Docker Swarm 集群部署及应用》

本次实验:

  • master:192.168.56.142
  • work1:192.168.56.132
  • work2:192.168.56.180

二、NFS 服务部署

可参考我前面的博客《构建NFS-FTP文件共享存储》

本次实验:

  • NFS IP:192.168.56.141
  • Shared Dir:/data/sharedir

三、Swarm 使用 NFS

3.1 通过 Volume

3.1.1 创建 Volume

1、创建 Docker Volume

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

docker volume create --driver local \
  --opt type=nfs \
  --opt o=addr=192.168.56.141,rw \
  --opt device=:/data/sharedir \
  nfsdata

2、查看 Volume 是否创建成功

docker volume ls

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

docker swarm nfs volume,云原生,docker,linux,运维

3、查看 Volume 详情

docker volume inspect nfsdata

docker swarm nfs volume,云原生,docker,linux,运维

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

3.1.2 使用 Volume

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

docker service create \
  --name nginx-nfs-test \
  --publish 1180:80 \
  --mount type=volume,source=nfsdata,destination=/data/web \
  --replicas 3 \
  nginx:1.20.2

2、查看 Service 部署情况

docker swarm nfs volume,云原生,docker,linux,运维

3.1.3 验证数据共享特性

1、NFS 服务创建测试数据

docker swarm nfs volume,云原生,docker,linux,运维

2、Service 验证是否共享 NFS 数据

docker swarm nfs volume,云原生,docker,linux,运维

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

当然,Nginx 也是正常运行的

docker swarm nfs volume,云原生,docker,linux,运维

3.2 通过 Docker Stack

Docker Stack CLI

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

3.2.1 创建 YAML 文件

参考:docker compose CLI

vim nginx-compose.yml

# 以下配置文件会创建一个名为myweb_nginx-nfs-test-1的service
# service命名规则:stack名_service名
version: "3"

services:
  nginx-nfs-test-1:
    image: nginx:1.20.2
    deploy:
      mode: replicated
      replicas: 3
      restart_policy:
        condition: on-failure
    ports:
      - "1181:80"
    networks:
      my-overlay-network:
        aliases:
          - nginx-test-net
    volumes:
      - "mountdata:/data/web"

volumes:
  mountdata:
    driver: local
    driver_opts:
      type: "nfs"
      o: "addr=192.168.56.141,rw"
      device: ":/data/sharedir"

networks:
  my-overlay-network:
    driver: overlay

如果你需要在指定的 Node 节点上运行 Service,可在配置文件中进行指定 Node 节点名(新增 placement 字段)。

version: "3"

services:
  nginx-nfs-test-1:
    image: nginx:1.20.2
    deploy:
      placement:
        constraints:
          - "node.hostname==harbor-nexus"
      mode: replicated
      replicas: 3
      restart_policy:
        condition: on-failure
    ...
    ...

除了可指定节点名外,还可以指定节点 ID、标签等。

3.2.2 使用 YAML 文件
docker stack deploy -c nginx-compose.yml myweb

# 创建一个名为myweb的stack

docker swarm nfs volume,云原生,docker,linux,运维

查看 Service 所在集群节点

docker swarm nfs volume,云原生,docker,linux,运维

3.2.3 验证数据共享特性

我在 3.1 小节中已经向 NFS 添加过测试数据了,现在来验证容器内部有没有测试数据。

docker exec -it myweb_nginx-nfs-test-1.2.dahr1c6am279qgnhf2910449c bash

docker swarm nfs volume,云原生,docker,linux,运维

可见,数据已经同步到 swarm service 容器内部。

至此,Docker Swarm 的数据持久化问题已经解决。当然,除了 NFS 共享存储外,还有 Ceph、ClusterFS 等存储也能实现。实际生产中大家自行修改使用即可。文章来源地址https://www.toymoban.com/news/detail-762194.html


到了这里,关于Docker Swarm NFS 数据持久化存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker学习(十)Docker 持久化存储

    docker学习(一)docker 概述 docker学习(二)docker 安装部署 docker学习(三)常用命令 docker学习(四)使用 commit 制作镜像 docker学习(五)使用 Dockerfile 制作镜像 docker学习(六)卷 Volume docker学习(七)docker daemon docker学习(八)HTTP/HTTPS 代理 docker学习(九)docker 调试 docker学习

    2024年02月12日
    浏览(39)
  • k8s通过nfs-provisioner配置持久化存储

    一、nfs-client-provisioner简介 Kubernetes集群中NFS类型的存储没有内置 Provisioner。但是你可以在集群中为NFS配置外部Provisioner。 Nfs-client-provisioner是一个开源的NFS 外部Provisioner,利用NFS Server为Kubernetes集群提供持久化存储,并且支持动态购买PV。但是nfs-client-provisioner本身不提供NFS,需

    2024年02月11日
    浏览(43)
  • K8S使用持久化卷存储到NFS(NAS盘)

    参考文章:K8S-v1.20中使用PVC持久卷 - 知乎 目录 1、概念: 1.1 基础概念 1.2 PV的配置 1.2.1 静态PV配置 1.2.2 动态PV配置 1.2.3 PVC与PV的绑定 1.2.4 PVC及PV的使用 2 部署PV及PVC 2.1 所有K8S机器都需要安装NFS程序 2.2 仅针对需要暴露文件服务的机器开启NFS服务         2.2.1 Linux为例开启NFS服

    2023年04月26日
    浏览(56)
  • docker的数据卷、docker数据持久化

    环境: centos7.9 docker version 20.10.14 本篇我们来介绍docker的数据卷,数据卷是用于实现docker数据的持久化。 使用docker过程中,我们需要持久化容器中产生的数据,以及容器与容器之间、容器与主机之前进行数据共享、备份等操作,这里就需要到容器的数据持久化管理。 docker的数

    2024年02月09日
    浏览(44)
  • Docker数据持久化

    在容器层的 UnionFS(联合文件系统)中对文件/目录的任何修改,无论是手工修改还是 容器在运行过程中的修改,在该容器丢失或被删除后这些修改将全部丢失。即这些修改是无 法保存下来的。若要保存下来这些修改,通常有两种方式: 定制镜像持久化:将这个修改过的容器

    2024年01月23日
    浏览(60)
  • Docker容器数据持久化

    Docker容器数据卷:volumes        数据卷是经过特殊设计的目录,可以绕过联合文件系统,为一个或者多个容器提供访问,数据卷设计的目的,在于数据的永久存储,它完全独立于容器的生存周期,因此,docker不会在容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集

    2024年02月10日
    浏览(56)
  • Docker啥是数据持久化?

    ​ 在容器层的 UnionFS(联合文件系统)中对文件/目录的任何修改,无论是手工修改还是容器在运行过程中的修改,在该容器丢失或被删除后这些修改将全部丢失。即这些修改是无法保存下来的。若要保存下来这些修改,通常有两种方式: 定制镜像持久化:将这个修改过的容

    2024年02月15日
    浏览(43)
  • Docker 数据持久化方案详解

    目录 一、Docker数据持久化概述 1.1联合文件系统 1.2容器的数据卷 1.2.1 什么是数据卷 1.2.2 数据卷特点 1.2.3 Docker提供三种方式将数据从宿主机挂载到容器 二、 Docker持久化方案 2.1 查看volume 基本命令使用方法 2.2 volume持久化方案 2.2.1volume简介 2.2.2.volume特点 2.2.3 挂载指定volume 2.

    2024年02月07日
    浏览(47)
  • 【Docker】Docker 部署 Mysql 并设置数据持久化

    我们使用Docker的目的就是图它方便下载部署,不用常规的经历下载、配置、安装等等繁琐的步骤。但是与此同时Docker也存在一些缺点,像删除容器后数据就都没有了。很显然,不能持久化对于需要数据持久化的MySQL数据库来说是不能接受的,那有没有方式可以解决。 有,通过

    2024年02月10日
    浏览(35)
  • Docker学习路线5:在 Docker 中实现数据持久化

    Docker 可以运行隔离的容器,包括应用程序和其依赖项,与主机操作系统分离。默认情况下,容器是临时的,这意味着容器中存储的任何数据在终止后都将丢失。为了解决这个问题并在容器生命周期内保留数据,Docker 提供了各种数据持久化方法。 Docker 卷 绑定挂载 Docker tmpfs

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包