1. MinIO 简介

MinIO 是一个基于 Go 实现的高性能、兼容 S3 协议的对象存储。它采用 GNU AGPL v3 开源协议,项目地址是 https://github.com/minio/minio,官网是 https://min.io。
它适合存储海量的非结构化的数据,例如说图片、音频、视频等常见文件,备份数据、容器、虚拟机镜像等等,小到 1 KB,大到 5 TB 都可以支持。
国内阿里巴巴、腾讯、百度、华为、中国移动、中国联通等企业在使用 MinIO,甚至不少商业公司二次开发 MinIO 来提供商业化的云存储产品。
疑问:为什么越来越少使用 FastDFS 实现文件存储服务呢?
部署运维复杂、无官方文档、缺乏长期维护的团队、性能较差、未提供 Docker & Kubernetes 集成方案等等原因。
2. MinIO Server 安装
由于 MinIO 是 Go 写的,所以就一个运行程序,因此安装部署 MinIO 就非常简单。
在文档 https://min.io/download 中,有 Windows、Linux、MacOS、Docker、Kubernetes、Source 六种安装方式。
下面,我们来安装下 MinIO,你可以选择适合你的方式。
2.1 快速安装
2.1.1 Windows
需要在 Windows PowerShell 中执行。
Invoke-WebRequest -Uri "https://dl.min.io/server/minio/release/windows-amd64/minio.exe" -OutFile "C:\minio.exe" ## 国外资源,龟速下载setx MINIO_ROOT_USER adminsetx MINIO_ROOT_PASSWORD passwordC:\minio.exe server F:\Data --console-address ":9001" ## F:\Data 存储目录;--console-address 是 UI 界面的端口
2.1.2 Linux
wget https://dl.min.io/server/minio/release/linux-amd64/minio ## 国外资源,龟速下载chmod +x minioMINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /Users/yunai/minio --console-address ":9001" ## /Users/yunai/minio 存储目录;--console-address 是 UI 界面的端口
2.1.3 MacOS
wget https://dl.min.io/server/minio/release/darwin-amd64/minio ## 国外资源,龟速下载chmod +x minioMINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server F:\Data --console-address ":9001" ## F:\Data 存储目录;--console-address 是 UI 界面的端口
2.1.4 Docker
① Windows:
docker run -p 9000:9000 -p 9001:9001 -e "MINIO_ACCESS_KEY=admin" -e "MINIO_SECRET_KEY=password" minio/minio server /data --console-address ":9001" # /Users/yunai/minio 存储目录;--console-address 是 UI 界面的端口
② Linux 或 MacOS:
docker run -p 9000:9000 -p 9001:9001 -e "MINIO_ACCESS_KEY=admin" -e "MINIO_SECRET_KEY=password" minio/minio server /Users/yunai/minio --console-address ":9001" ## /Users/yunai/minio 存储目录;--console-address 是 UI 界面的端口
2.2 访问 UI 界面
使用浏览器访问 http://127.0.0.1:9001 地址,访问 MinIO 内置的 UI 界面。
输入账号 admin,密码 password 进行登录,成功进入首页。

2.3 新建存储桶
点击 [Create Bucket] 按钮,新建一个 Bucket 存储桶,用于稍后文件的上传。

2.4 添加 readonly 访问规则
默认配置下,访问存储桶是需要请求授权的。但是在实际场景下,我们往往希望允许直接访问,此时就需要添加一条 readonly 访问规则。
① 点击右上角的 [Configure Bucket] 设置图标,然后选择 [Access Rules] 菜单。

② 点击 [Add Access Rule] 按钮,添加一条 Prefix 为 / Access 为 readonly 的规则。

2.5 上传文件
点击 [Upload] 按钮,点击 [Upload File] 选项,选择一个图片上传。

2.6 访问文件
文件的访问地址的格式为 <http://127.0.0.1:9000/{bucket}/{name}>,注意是 9000 端口。
我们刚上传的文件 {bucket} 是 yudaoyuanma,{name} 是 822aebded6e6414e912534c6091771a4.jpg,所以最终的访问路径是 http://127.0.0.1:9000/yudaoyuanma/822aebded6e6414e912534c6091771a4.jpg。

3. MinIO Client 命令行工具
MinIO Client (mc) 是 MinIO 提供的命令行工具,用于访问 MinIO Server。它的命令设计的非常棒,和我们在使用 ls、cat、cp、mirror、diff、find 等 Unix 命令基本接近,主要如下:
ls 列出文件和文件夹mb 创建一个存储桶或一个文件夹cat 显示文件和对象内容pipe 将一个 STDIN 重定向到一个对象或者文件或者 STDOUTshare 生成用于共享的 URLcp 拷贝文件和对象mirror 给存储桶和文件夹做镜像find 基于参数查找文件diff 对两个文件夹或者存储桶比较差异rm 删除文件和对象events 管理对象通知watch 监听文件和对象的事件policy 管理访问策略session 为 cp 命令管理保存的会话config 管理 mc 配置文件update 检查软件更新version 输出版本信息
例如说,使用 mc ls 列出有哪些 Bucket 存储桶:
- MinIO Client 安装:https://min.io/download
- MinIO Client 命令:https://docs.min.io/minio/baremetal/reference/minio-mc.html
