Docker swarm 集群NFS共享目录
服务端安装命令如下:
sudo apt install nfs-kernel-server -y
服务端配置NFS存储路径
sudo mkdir /nfs
sudo chmod 777 -R /nfs
sudo vi /etc/exports
添加以下内容
/nfs 192.168.79.0/24(rw,sync,no_root_squash,no_subtree_check)
配置完毕后重载配置:
sudo exportfs -rav
NFS服务的配置完毕!
所有Docker主机安装NFS客户端,安装命令如下:
sudo apt install nfs-common -y
提示:
安装了服务端的主机不用再次安装客户端,已经随同安装了。
查看服务端的目录列表
showmount -e 192.168.79.129
sudo mkdir /mynfs
sudo mount -t nfs 192.168.79.129:/nfs /mynfs
在/mynfs目录中创建文件,然后在NFS服务端的共享目录中查看文件是否存在,存在则代表共享成功。
sudo umount /mynfs
既然是集群,我们就不会希望跑到每个节点上面去配置NFS挂载和映射。做集群共享卷的关键,就是在compose文件中创建volume。语法如下:
volumes:
my-vol:
driver_opts:
type: "nfs"
o: "addr=192.168.79.129,rw"
device: ":/volume1/swarm"
下面来一个复杂一点的 stack 配置,有 Prometheus 与 Grafana 两个容器,其中 Grafana 挂载 NFS 卷作为持久化存储,两个容器通过 overlay 网络互访。
version: '3.7'
services:
grafana:
image: grafana/grafana:latest
hostname: grafana
deploy:
restart_policy:
delay: 10s
max_attempts: 10
window: 60s
networks:
- monitor_distributed
ports:
- 3000:3000
volumes:
- grafana-data:/var/lib/grafana
prometheus:
image: prom/prometheus:latest
hostname: prometheus
deploy:
restart_policy:
delay: 10s
max_attempts: 10
window: 60s
networks:
- monitor_distributed
networks:
monitor_distributed:
driver: overlay
volumes:
grafana-data:
driver_opts:
type: "nfs"
o: "addr=192.168.79.129,rw"
device: ":/volume1/grafana"
https://www.leftso.com/article/1064.html