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方式安装

具体安装步骤如下:

  1. 使用~~docker search minio~~命令搜索一下minio的镜像(一般没什么意义)。
  2. 使用docker pull minio/minio下载最新的镜像版本(不指定版本号,pull的就是最新版本)。
  3. docker images确认一下镜像是否下载成功。
  4. 创建外部挂载点的目录:目录可以自己指定,不一定要一样。
    1. 存放配置文件的:mkdir -p /home/minio/config
    2. 存放数据的:mkdir -p /home/minio/data
  5. 运行容器,通过配置项指定它的外部挂载点:
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目录下

  1. 之后就可以访问地址: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的部署地址:端口号/桶名称/文件名称.后缀名

如果想要通过路径访问到该文件还需要在管理端给桶设置权限(设置权限之后还需要重新上传)。

设置权限的方法:菜单栏右键桶名,添加读写权限。

相关推荐
小王不爱笑13224 分钟前
LangChain4J 整合多 AI 模型核心实现步骤
java·人工智能·spring boot
西凉的悲伤25 分钟前
spring-boot-starter-validation使用注解进行参数校验
java·spring boot·参数校验·validation·注解校验参数
LucDelton37 分钟前
Java 读取无限量文件读取的思路
java·运维·网络
夹锌饼干1 小时前
mysql死锁排查流程--(处理mysql阻塞问题)
java·mysql
小信丶1 小时前
@EnableTransactionManagement注解介绍、应用场景和示例代码
java·spring boot·后端
To Be Clean Coder1 小时前
【Spring源码】createBean如何寻找构造器(四)——类型转换与匹配权重
java·后端·spring
-孤存-1 小时前
SpringBoot核心注解与配置详解
java·spring boot·后端
Hx_Ma162 小时前
BCrypt
java
We....2 小时前
鸿蒙与Java跨平台Socket通信实战
java·服务器·tcp/ip·arkts·鸿蒙
笃行客从不躺平2 小时前
Token 复习
java·分布式·spring cloud