docker+rexray+minio s3fs对象存储

1,464 阅读2分钟

s3-fuse安装

yum install epel-release
yum install s3fs-fuse
vim ~/.passwd-s3fs 
//写入ak:sk,​示例如下
accessKey:secretKey

rexray安装

sudo curl -sSL https://rexray.io/install | sh

编辑配置文件:/etc/rexray/config.yml,使用的是s3fs,所以文件如下:

libstorage:
  service: s3fs
s3fs:
  accessKey: *****  #minio的key
  secretKey: *******
  region: us-east-1
  endpoint: http://192.168.2.5:9001  #minio的访问路径
  disablePathStyle: false
  options:
          - url=http://192.168.2.5:9001
          - use_path_request_style
          - nonempty

启动rexray服务:

service rexray start


注意:rexray启动后应出现由字符构成的'rexray'字样,否则是未启动成功,需要检查config.yml文件是否配置正确,然后执行:

rexray service restart

创建及挂载数据卷

sudo rexray volume create s3-bucket
sudo rexray volume mount volume s3-bucket

挂载如出现错误应检查s3-fuse是否安装成功

现在在192.168.2.5:9001上运行的minio里应能看到s3-bucket

在docker上验证数据持久化

首先执行如下命令创建一个docker数据卷:

sudo docker volume create -d rexray --name s3-bucket

若出现如下错误:

Error response from daemon: create s3-bucket: Post http://%2Frun%2Fdocker%2Fplugins%2Frexray.sock/VolumeDriver.Create: dial unix /run/docker/plugins/rexray.sock: connect: no such file or directory

则考虑重启rexray: rexray service restart

查看volume:

sudo docker volume ls #如果没错,可看到上一步创建的testbucket
sudo docker volume inspect s3-bucket #看一下这个volume,Driver为rexray

随后在运行docker容器时挂载此数据卷:

docker run -it --volume-driver=rexray -v s3-bucket:/<数据文件夹> <image>

这里给出192.168.2.2下的示例:

docker container run -p 8002:3000 -it --mount type=volume,volume-driver=rexray,source=s3-bucket,target=/demos 192.168.2.3:5000/koa-demo /bin/bash

在数据文件夹下新建一个文件,应能在在192.168.2.5:9001上运行的minio的s3-bucket桶下的data文件夹里看到此文件,容器终止运行后此文件仍存在于minio中。

这里给出192.168.2.2下在执行完上一步命令后在容器中的示例:

echo 'ceshi' > /demos/1.txt

跨主机存储

按照此手册在另一台主机安装s3-fuse和rexray之后,执行rexray volume ls可以查看所有连接到rexray的虚拟磁盘,按上一节所述在docker容器运行的时候挂载即可实现数据持久化与跨主机存储