MinIO快速入门
1 MinIO核心概念
下面介绍MinIO中的几个核心概念,这些概念在所有的对象存储服务中也都是通用的。
对象(Object)
对象是实际的数据单元,例如我们上传的一个图片。
存储桶(Bucket)
存储桶是用于组织对象的命名空间,类似于文件夹。每个存储桶可以包含多个对象。
端点(Endpoint)
端点是MinIO服务器的网络地址,用于访问存储桶和对象,例如
http://192.168.10.101:9000
注意:
9000
为MinIO的API的默认端口,前边配置的 9001
以为管理页面端口。
Access Key 和 Secret Key
Access Key是用于标识和验证访问者身份的唯一标识符,相当于用户名。
Secret Key是与Access Key关联的密码,用于验证访问者的身份。
2 MinIO管理页面操作
登录
管理页面的地址为http://192.168.10.101:9001,登录的用户名和密码为部署时在
EnvironmentFile
文件中配置的如下参数
1 | MINIO_ROOT_USER=minioadmin |
创建存储桶
上传图片
找到目标桶
上传图片
访问图片
图片URL
由于MinIO提供了HTTP访问功能,所以可以通过浏览器直接访问对象。对象URL为MinIO的
Endpoint
+对象的存储路径
,例如下图中的图片对象的URL为http:192.168.10.101:9000/test/公寓-外观.jpg。访问权限
不出意外的话,使用浏览器访问上述URL,会得到如下响应,很显然是没有访问权限。
1 | <Error> |
若想继续访问图片,需要修改图片**所在桶**的访问权限,如下图所示

如上图所示,可选的访问权限共有三个选项,分别是 `Private` 、 `Public` 和 `Custom` ,具体说明如下
- `Private`
只允许桶的所有者对该桶进行读写。
- `Public`
允许所有人对该桶进行读写。
- `Custom`
自定义访问权限。
若想将权限设置为只允许所有者写,但允许所有人读,就需要自定义访问权限。自定义访问权限,需要使用一个规定格式的JSON字符串进行描述,具体格式可参考[官方文档](https://min.io/docs/minio/linux/administration/identity-access-management/policy-based-access-control.html#policy-document-structure)。
例如以下JSON字符串表达的含义是:允许( `Allow` )所有人( `*` )读取( `s3:GetObject` )指定桶( `test` )的所有内容。
1 | { |
将 `test` 桶访问权限设置为 `Custom` ,并添加上述内容

重新访问[http:192.168.10.101:9000/test/公寓-外观.jpg](http:192.168.10.101:9000/test/公寓-外观.jpg),观察是否正常。
3 MinIO Java SDK
MinIO提供了多种语言的SDK供开发者使用,本项目需要用到Java SDK,下面通过一个简单案例熟悉一下其基本用法,具体内容可参考官方文档。
创建一个Maven项目
引入如下依赖
1 | <dependency> |
- 编写如下内容
1 | public class App { |
运行测试
运行上述代码,然后查看MinIO管理页面,观察是否上传成功。