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

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

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

相关推荐
anlogic3 分钟前
Java基础 8.16
java·开发语言
可口码农18 分钟前
MixOne:Electron Remote模块的现代化继任者
java·前端·electron
蚰蜒螟32 分钟前
Netty 的 Select/Poll 机制核心实现主要在 NioEventLoop 的事件循环
java·开发语言
Full Stack Developme1 小时前
Java后台生成多个Excel并用Zip打包下载
java·开发语言·excel
Brookty1 小时前
【Java学习】锁、线程死锁、线程安全2
java·开发语言·学习·java-ee
百锦再2 小时前
.NET 的 WebApi 项目必要可配置项都有哪些?
java·开发语言·c#·.net·core·net
耳东哇2 小时前
spring ai-openai-vl模型应用qwen-vl\gpt-文字识别-java
java·人工智能·spring
花开富贵ii3 小时前
代码随想录算法训练营四十三天|图论part01
java·数据结构·算法·深度优先·图论
布朗克1684 小时前
Java 10 新特性及具体应用
java·开发语言·新特性·java10
ZZHow10247 小时前
JavaWeb开发_Day05
java·笔记·web