Skip to content

技术栈-MinIO使用教程

MinIO 简介

MinIO 是一款基于 Go 语言的高性能对象存储服务,在 GitHub 上已有 28K+ Star。它采用了 Apache License v2.0 开源协议,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。

MinIO 的安装

Windows 下的安装

image.png

image.png

  • 下载完成后创建 MinIO 的数据存储目录,并使用如下启动命令启动 MinIO 服务:
bash
minio.exe server D:\developer\env\minio\data --console-address ":9001"
  • 此时 MinIO 的 API 将运行在 9000 端口,MinIO Console 管理页面将运行在 9001 端口。

Linux 下的安装

  • 首先下载 MinIO 的 Docker 镜像:
bash
docker pull minio/minio
  • 下载完成后使用如下命令运行 MinIO 服务,注意使用 --console-address 指定 MinIO Console 的运行端口(否则会随机端口运行):
bash
docker run -p 9090:9000 -p 9001:9001 --name minio \
-v /mydata/minio/data:/data \
-e MINIO_ROOT_USER=minioadmin \
-e MINIO_ROOT_PASSWORD=minioadmin \
-d minio/minio server /data --console-address ":9001"

MinIO Console 的使用

MinIO Console 是 MinIO 自带的可视化管理工具,下面我们来体验下这个工具。

  • MinIO 服务运行成功后就可访问 MinIO Console 的管理界面了,输入账号密码 minioadmin:minioadmin 即可登录,访问地址:http://localhost:9001

image.png

  • 看下 MinIO Console 的左侧菜单,不仅支持了存储桶、文件的管理,还增加了用户、权限、监控等管理功能。
  • 在存储文件之前,我们首先得创建一个存储桶,下方选项的用法直接参考右侧说明即可,非常方便。
  • 创建成功后,再上传一个文件。
  • 上传成功后如果你想从外部访问文件的话,我们需要对存储桶的访问策略进行设置。

image.png

  • 设置存储桶的访问策略为自定义。

image.png

  • 然后只给匿名用户分配获取文件的权限即可。

image.png

  • 具体设置访问策略如下:
json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "*"
                ]
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::blog/*.**"
            ]
        }
    ]
}

image.png

兼容 AWS S3

当我们对接第三方服务要用到对象存储时,这些服务往往都是支持 AWS S3 的。比如说一个直播的回放功能,需要对象存储来存储回放的视频,由于 MinIO 兼容 AWS S3 的大多数 API,我们可以直接拿它当 AWS S3 来使用。

image.png

  • 安装好 S3 Browser 之后,添加一个 Account,输入相关登录信息,注意选择 Account 类型为 S3 Compatible Storage。

image.png

  • 连接成功后,我们可以看见之前我们创建的存储桶和上传的文件。

image.png

  • S3 Browser 这个工具功能还是很强大的。

image.png

  • 如果你想修改存储桶的访问权限的话直接通过 Permissions 标签修改即可,是不是比 MinIO Console 灵活多了。

image.png

命令行客户端的使用

其实对于对象存储来说,MinIO Console 的功能基本上也够用了,不过官方还提供了基于命令行的客户端 MinIO Client(简称 mc),下面我们来讲讲它的使用方法。

常用命令

我们先来熟悉下 mc 的命令,这些命令和 Linux 中的命令有很多相似之处。

命令作用
ls列出文件和文件夹
mb创建一个存储桶或一个文件夹
rb删除一个存储桶或一个文件夹
cat显示文件和对象内容
pipe将一个 STDIN 重定向到一个对象或者文件或者 STDOUT
share生成用于共享的 URL
cp拷贝文件和对象
mirror给存储桶和文件夹做镜像
find基于参数查找文件
diff对两个文件夹或者存储桶比较差异
rm删除文件和对象
events管理对象通知
watch监听文件和对象的事件
policy管理访问策略
session为 cp 命令管理保存的会话
config管理 mc 配置文件
update检查软件更新
version输出版本信息

安装及配置

由于 MinIO 服务端中并没有自带客户端,所以我们需要安装并配置完客户端后才能使用,这里以 Docker 环境下的安装为例。

  • 下载 MinIO Client 的 Docker 镜像:
bash
docker pull minio/mc
  • 在 Docker 容器中运行 mc:
bash
docker run -it --entrypoint=/bin/sh minio/mc
  • 运行完成后我们需要进行配置,将我们自己的 MinIO 服务配置到客户端上去,配置的格式如下:
bash
mc config host add <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY>
  • 对于我们的 MinIO 服务可以这样配置:
bash
mc config host add minio [http://192.168.7.142:9090](http://192.168.7.142:9090) minioadmin minioadmin

常用操作

  • 查看存储桶和查看存储桶中存在的文件:
bash
# 查看存储桶
mc ls minio
# 查看存储桶中存在的文件
mc ls minio/blog
  • 创建一个名为 test 的存储桶:
bash
mc mb minio/test
  • 共享 avatar.png 文件的下载路径:
bash
mc share download minio/blog/avatar.png
  • 查找 blog 存储桶中的 png 文件:
bash
mc find minio/blog --name "*.png"
  • 设置 test 存储桶的访问权限为只读。
bash
# 目前可以设置这四种权限:none, download, upload, public
mc policy set download minio/test/
# 查看存储桶当前权限
mc policy list minio/test/

小结

如果你想自建对象存储服务的话,MinIO 确实是首选。它能兼容 AWS S3 的 API,使用 MinIO 相当于是在使用 AWS S3,能兼容一些主流的第三方服务。

参考资料