MinIO的安装和使用
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
- 存放配置文件的:
- 运行容器,通过配置项指定它的外部挂载点:
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"
:::tips
9090端口指的是minio的客户端端口
<font style="color:rgb(79, 79, 79);">MINIO_ACCESS_KEY</font>
:账号
<font style="color:rgb(79, 79, 79);">MINIO_SECRET_KEY</font>
:密码(账号长度必须大于等于5,密码长度必须大于等于8位)
<font style="color:rgb(79, 79, 79);">-v</font>
指定了数据挂在linux系统中的<font style="color:rgb(79, 79, 79);">/home/minio/data</font>
目录下,配置信息挂在<font style="color:rgb(79, 79, 79);">/home/minio/config</font>
目录下
:::
- 之后就可以访问
地址:9000/minio/
来进入管理界面了。
基本使用
基本概念:
bucket(桶)-类比于文件系统的目录
Object-类比文件系统的文件
Keys-类比文件名
创建一个bucket(桶):在管理界面中,可以点击右下角的“+”,点击“Create bucket”,指定桶名称。
Java整合
导入MinIO的依赖:
<!-- minio的依赖 -->
<dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><!-- 根据自己情况修改版本号 --><version>7.1.0</version>
</dependency>
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的部署地址:端口号/桶名称/文件名称.后缀名
。
如果想要通过路径访问到该文件还需要在管理端给桶设置权限(设置权限之后还需要重新上传)。
设置权限的方法:菜单栏右键桶名,添加读写权限。