简介:MinIO 第一课复习笔记,包含对象存储概念、S3 协议介绍、MinIO 特性、许可证坑点、Docker 一键部署实战,适合后端开发学习。
1. MinIO 是什么
MinIO 是一个高性能、分布式对象存储系统。 可以在自己的服务器、私有云或者边缘设备上搭建类似 AWS S3的对象存储服务。
典型场景:上传文件后获取文件访问链接,直接通过 HTTP 快速访问文件。
2. 对象存储基础概念
对象存储是一种用来存储大量非结构化数据的存储方案。
非结构化数据举例:图片、视频、音频、日志文件、备份文件、AI 训练数据。 这类数据特点:体积大、结构不固定,不适合直接存入数据库。
对象存储把数据封装成对象,每个对象包含三部分:
- 数据本身(文件内容)
- 元数据(文件大小、类型、创建时间等)
- 全局唯一 ID
对象存储特点
- 容量可无限横向扩展
- 读写性能高
- 存储成本低
- 适合海量非结构化数据
- 访问方式:HTTP/HTTPS REST API
- 行业标准:兼容 Amazon S3 API
3. 什么是 S3 API
S3 全称:Amazon Simple Storage Service,亚马逊 2006 年推出的对象存储服务。
S3 特点:
- 简单易用
- 无限容量
- 高可靠、高可用
- 通过 RESTful API 访问
S3 已经成为对象存储行业标准。 主流兼容 S3 API 的存储服务:
- 阿里云 OSS
- 腾讯云 COS
- 华为云 OBS
- Google Cloud Storage
- Azure Blob Storage(部分兼容)
一句话总结:S3 是对象存储的标准接口,绝大多数对象存储产品都支持 S3 API。
4. MinIO 的核心特点
- 高性能:基于 Go 语言开发,读写性能极高,适合 AI 训练数据、视频、日志等大规模文件存储。
- 兼容 S3 API:几乎所有对接 S3 的工具、SDK、应用都可以直接接入 MinIO。
- 部署简单:单一二进制文件,无额外依赖;支持 Linux、Windows、macOS、容器、Kubernetes。
- 可扩展性强:支持单节点到大规模分布式集群,新增节点即可线性扩容容量与性能。
- 高可用性:支持多副本、纠删码(Erasure Code),多块硬盘 / 节点损坏也能保证数据不丢失。
- 安全性:提供 TLS、IAM 访问控制、对象锁定、加密等安全能力。
5. MinIO 许可证与版本坑
5.1 许可证变更问题
MinIO 在 RELEASE.2023-04-20 及之后版本,许可证由 Apache 2.0 修改为 GNU AGPL v3 + 商业许可证。
- AGPL v3:商业闭源项目,如果直接修改 MinIO 核心代码并对外提供服务,需要开源相关代码; 仅作为工具部署使用(私有存储、学习、内部测试)不受 AGPL 约束,对学习者、中小企业友好。
- Apache 2.0 旧版本:
RELEASE.2023-03-20及更早版本,保留 Apache2.0,无强制开源约束。
5.2 Console Web 界面移除问题
RELEASE.2025-04-28及之后官方 Docker 镜像,默认移除内置 Console 可视化 Web 管理界面 。 需要单独启动minio console或者独立部署 Console 镜像。
新手建议选择 2025-04-08 版本,自带 Web 控制台,学习体验更好。
6. Docker 部署 MinIO(单节点测试模式)
单主机单磁盘模式:无扩容、无纠删容错,仅用于开发、测试环境,禁止生产使用。
6.1 拉取指定版本镜像
docker pull minio/minio:RELEASE.2025-04-08T15-41-24Z
6.2 启动 MinIO 容器
# 创建本地数据目录
mkdir -p /opt/minio/data
# 启动minio容器
docker run -d --name minio \
-p 9000:9000 -p 9001:9001 \
-v /opt/minio/data:/data \
minio/minio:RELEASE.2025-04-08T15-41-24Z \
server /data --console-address ":9001"
6.3 自定义账号密码(环境变量)
访问 Web 控制台:服务器9001端口。 默认账号密码:minioadmin / minioadmin。 使用环境变量自定义账号密码: MINIO_ROOT_USER 管理员用户名 MINIO_ROOT_PASSWORD 管理员密码
带自定义账号完整启动命令
mkdir -p /opt/minio/data
docker run -d --name minio \
-p 9000:9000 -p 9001:9001 \
-e MINIO_ROOT_USER="admin" \
-e MINIO_ROOT_PASSWORD="12345678" \
-v /opt/minio/data:/data \
minio/minio:RELEASE.2025-04-08T15-41-24Z \
server /data --console-address ":9001"
- 9000 端口:S3 API 服务端口(程序对接用)
- 9001 端口:Web 可视化管理控制台(浏览器访问)