创建dockerSwarm nfs挂载

创建dockerSwarm nfs挂载

NFS(Network File System)是网络文件系统‌。
NFS是由SUN公司研制的UNIX表示层协议,允许使用者访问网络上别处的文件就像在使用自己的计算机一样‌1。
它是一种用于在计算机系统之间共享文件和目录的协议,被广泛用于UNIX和Linux操作系统中‌。
NFS基于UDP/IP协议,实现主要依赖远程过程调用(RPC)机制。RPC提供与机器、操作系统及底层传送协议无关的远程文件存取操作,并采用XDR进行数据编码和解码,支持异构系统间的数据传输‌。
NFS通过将文件系统挂载到远程服务器上,实现文件和目录的共享。客户端请求访问文件时,NFS将请求传递给服务器,服务器返回所需数据‌。
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.22
    volumes:
      - nfs121:/data
    ports:
      - "8081:80"  
    deploy:    
       mode: global  
volumes:
  nfs121:
    driver: local
    driver_opts:
      type: "nfs"
      o: "addr=192.168.56.120,rw"
      device: ":/home/nfs"
EOF

docker 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

查看结果

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuhm~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值