前段时间实践了一下把minio的桶挂载到docker,这里先介绍一下步骤:
s3-fuse安装
yum install epel-release
yum install s3fs-fuse
vim ~/.passwd-s3fs
//写入ak:sk,示例如下
zhagnsan:123456
rexray安装
sudo curl -sSL https://rexray.io/install | sh
编辑配置文件:/etc/rexray/config.yml,使用的是s3fs,所以文件如下:
libstorage:
service: s3fs
s3fs:
accessKey: zhagnsan #minio的key
secretKey: 123456
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
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0BjEio2D-1572959995576)(C:\Users\Watson\AppData\Roaming\Typora\typora-user-images\1568616968573.png)]
注意: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>
到这里为止minio的挂载就完成了。
Ceph的挂载
本来以为ceph的挂载会比较复杂,网上搜了下也没有一个比较完整的教程,于是我先尝试修改了一下rexray的配置文件:
libstorage:
service: s3fs
s3fs:
accessKey: ak
secretKey: sk
endpoint: http://192.168.101.8:7480
disablePathStyle: false
options:
- url=http://192.168.101.8:7480
- use_path_request_style
- nonempty
这里要注意的是,由于我的bucket在ceph里的region显示的是Default Region,所以在配置文件里我删除了region这一项。
配置文件修改后执行 rexray service restart
,发现挂载成功了。