全站最帅😎
发布于 2020-04-15 / 1409 阅读
0
0

Docker使用NFS做跨节点存储

Docker构建容错应用程序时,可能需要配置同一服务的多个副本才能访问相同的文件。
image.png

  1. 所有节点安装nfs:
yum -y install nfs-utils
  1. 在manager节点上启动nfs服务端
systemctl enable nfs
systemctl start nfs
  1. work节点上启动nfs客户端
systemctl start rpcbind
  1. 在manager节点上创建管理目录,设置相关参数,重启服务
mkdir -p /data/nfs
echo "/data/nfs *(rw,no_root_squash,sync)">>/etc/exports
systemctl restart nfs

/data/nfs : 共享的目录
*: 可以访问的主机网段
rw : 可读写权限,只读权限ro
sync : 同步,数据更安全,速度慢
async : 异步,速度快,效率高,安全性低
no_root_squash :NFS 服务共享的目录的属性, 如果用户是root, 对这个目录就有root的权限

  1. 测试挂载nfs共享目录
# 在work节点执行命令挂载 volume 到 /tmp 目录下
mount -t nfs 192.168.3.150:/data/nfs /tmp
cd /tmp && touch a.txt
# 卸载volume
umount /tmp
# manager节点查看刚刚在work节点创建的a.txt
 ls /data/nfs/
  1. 在需要挂载的节点创建
docker volume create --driver local --opt type=nfs --opt o=addr=192.168.3.150,rw --opt device=:/data/nfs volume-nfs
# 查看创建的volume的信息
docker volume inspect volume-nfs

[
    {
        "CreatedAt": "2020-04-13T14:39:47+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/volume-nfs/_data",
        "Name": "volume-nfs",
        "Options": null,
        "Scope": "local"
    }
]
  1. 使用 nfs volume 创建服务
# 在某一个work节点创建服务并且使用volume
docker run -dit --name data1 -v volume-nfs:/mnt ubuntu:16.04
# 进入 data1 容器
docker exec -it data1 /bin/bash
cd /mnt && touch a.txt  # ctrl + p + q 退出容器
# 在manager节点上就可以查看到刚刚在work节点上创建的文件了
ls /data/nfs

评论