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的部署地址:端口号/桶名称/文件名称.后缀名

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

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

相关推荐
昀贝3 小时前
IDEA启动SpringBoot项目时报错:命令行过长
java·spring boot·intellij-idea
roman_日积跬步-终至千里4 小时前
【LangGraph4j】LangGraph4j 核心概念与图编排原理
java·服务器·数据库
野犬寒鸦4 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
wenzhangli74 小时前
ooderA2UI BridgeCode 深度解析:从设计原理到 Trae Solo Skill 实践
java·开发语言·人工智能·开源
HalvmånEver4 小时前
Linux:线程互斥
java·linux·运维
rainbow68895 小时前
深入解析C++STL:map与set底层奥秘
java·数据结构·算法
灵感菇_5 小时前
Java 锁机制全面解析
java·开发语言
indexsunny5 小时前
互联网大厂Java面试实战:Spring Boot微服务在电商场景中的应用与挑战
java·spring boot·redis·微服务·kafka·spring security·电商
娇娇乔木5 小时前
模块十一--接口/抽象方法/多态--尚硅谷Javase笔记总结
java·开发语言
saber_andlibert5 小时前
TCMalloc底层实现
java·前端·网络