MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。主要特点如下:
- 基于Golang语言实现,配置简单,单行命令可以运行起来
- MilO兼容亚马逊S3云存储服务接口,适合于存储大容量非结构化的数据,一个对象文件可以是任意大小,从几kb到最大5T不等。
- 多平台,它提供了windows、linux、macos等客户端
官网地址(英文):MinIO | S3 Compatible Storage for AI
官网地址(中文):MinIO | 用于AI的S3&Kubernetes原生对象存储
安装
docker方式安装
具体安装步骤如下:
- 使用
~~docker search minio~~
命令搜索一下minio的镜像(一般没什么意义)。 - 使用
docker pull minio/minio
下载最新的镜像版本(不指定版本号,pull的就是最新版本)。 - 用
docker images
确认一下镜像是否下载成功。 - 创建外部挂载点的目录:目录可以自己指定,不一定要一样。
- 存放配置文件的:
mkdir -p /home/minio/config
- 存放数据的:
mkdir -p /home/minio/data
- 存放配置文件的:
- 运行容器,通过配置项指定它的外部挂载点:
shell
docker run -p 9000:9000 -p 9090:9090 \
--net=host \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minioadmin" \
-e "MINIO_SECRET_KEY=minioadmin" \
-v /home/minio/data:/data \
-v /home/minio/config:/root/.minio \
minio/minio server \
/data --console-address ":9090" -address ":9000"
9090端口指的是minio的客户端端口
MINIO_ACCESS_KEY
:账号
MINIO_SECRET_KEY
:密码(账号长度必须大于等于5,密码长度必须大于等于8位)
-v
指定了数据挂在linux系统中的
/home/minio/data
目录下,配置信息挂在/home/minio/config
目录下
- 之后就可以访问
地址:9000/minio/
来进入管理界面了。
基本使用
基本概念:
bucket(桶)-类比于文件系统的目录
Object-类比文件系统的文件
Keys-类比文件名
创建一个bucket(桶):在管理界面中,可以点击右下角的"+",点击"Create bucket",指定桶名称。
Java整合
导入MinIO的依赖:
xml
<!-- minio的依赖 -->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<!-- 根据自己情况修改版本号 -->
<version>7.1.0</version>
</dependency>
java代码:
java
void testMinIo(){
// 获取minion的链接信息,创建一个minio客户端
MinioClient minioClient = MinioClient.builder()
.endpoint("http://192.168.1.102:9000") // 地址
.credentials("minioadmin", "minioadmin") // 用户名和密码
.build();
// 上传文件
try {
// 获取文件流
FileInputStream fileInputStream = new FileInputStream("D:\\test.html");
// 构建文件对象
PutObjectArgs objectArgs = PutObjectArgs.builder()
.bucket("test") // 存储桶
.object("test.txt") // 文件名
.contentType("text/html")
.stream(fileInputStream,fileInputStream.available(), -1) // 文件流,文件大小,分片大小
.build(); // 构建文件对象
minioClient.putObject(objectArgs); // 上传文件
System.out.println("上传成功");
} catch (Exception e) {
e.printStackTrace();
}
}
注意 :
上传之后的访问路径为MinIO的部署地址:端口号/桶名称/文件名称.后缀名
。
如果想要通过路径访问到该文件还需要在管理端给桶设置权限(设置权限之后还需要重新上传)。
设置权限的方法:菜单栏右键桶名,添加读写权限。