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

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

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

相关推荐
努力也学不会java1 小时前
【RabbitMQ】 RabbitMQ高级特性(二)
java·分布式·后端·中间件·rabbitmq
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ2 小时前
crud方法命名示例
java·开发语言
多则惑少则明2 小时前
java 代码查重(三)常见的距离算法和相似度(相关系数)计算方法
java·算法·常见的距离算法和相似度
头发那是一根不剩了3 小时前
Spring Boot 注解 @ConditionalOnMissingBean是什么
java·spring boot·后端
天若有情6734 小时前
探秘 C++ 计数器类:从基础实现到高级应用
java·开发语言·c++
明天不下雨(牛客同名)4 小时前
介绍一下 MVCC
java·服务器·数据库
春生野草5 小时前
如何用JAVA手写一个Tomcat
java·开发语言·tomcat
小猪咪piggy5 小时前
【JavaEE】(1) 计算机如何工作
java
smileNicky5 小时前
SpringBoot系列之OpenAI API 创建智能博客评论助手
java·spring boot·后端