【minio】#1 | 简介与安装

简介:MinIO 第一课复习笔记,包含对象存储概念、S3 协议介绍、MinIO 特性、许可证坑点、Docker 一键部署实战,适合后端开发学习。

1. MinIO 是什么

MinIO 是一个高性能、分布式对象存储系统。 可以在自己的服务器、私有云或者边缘设备上搭建类似 AWS S3的对象存储服务。

典型场景:上传文件后获取文件访问链接,直接通过 HTTP 快速访问文件。

2. 对象存储基础概念

对象存储是一种用来存储大量非结构化数据的存储方案。

非结构化数据举例:图片、视频、音频、日志文件、备份文件、AI 训练数据。 这类数据特点:体积大、结构不固定,不适合直接存入数据库。

对象存储把数据封装成对象,每个对象包含三部分:

  1. 数据本身(文件内容)
  2. 元数据(文件大小、类型、创建时间等)
  3. 全局唯一 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 的核心特点

  1. 高性能:基于 Go 语言开发,读写性能极高,适合 AI 训练数据、视频、日志等大规模文件存储。
  2. 兼容 S3 API:几乎所有对接 S3 的工具、SDK、应用都可以直接接入 MinIO。
  3. 部署简单:单一二进制文件,无额外依赖;支持 Linux、Windows、macOS、容器、Kubernetes。
  4. 可扩展性强:支持单节点到大规模分布式集群,新增节点即可线性扩容容量与性能。
  5. 高可用性:支持多副本、纠删码(Erasure Code),多块硬盘 / 节点损坏也能保证数据不丢失。
  6. 安全性:提供 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 可视化管理控制台(浏览器访问)
相关推荐
分布式存储与RustFS5 小时前
镜像仓库的层别只堆本地盘:用 RustFS 给 Harbor 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
xbzb7 小时前
自建镜像仓库:registry 一条命令 + harbor 部署、授权、跨库同步与卸载
docker·harbor·镜像·仓库·同步·registry
分布式存储与RustFS8 小时前
工作流脚本和依赖 JAR 散在各节点本地盘:用 DolphinScheduler 资源中心接到 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
分布式存储与RustFS1 天前
群晖 NAS 被 C3RB3R 锁了:本地备份一起被加密,RustFS 对象锁为什么删不掉
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
分布式存储与RustFS1 天前
OpenObserve 的日志别堆本地盘:用 RustFS 当它的对象存储底座
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
wz97541 天前
Docker 从 systemd 托管容器、overlay2 存储驱动到 Compose 多容器实战
spring cloud·docker·eureka
新*1 天前
ES 7.17 三节点 Docker 集群接入 IK 自定义词典:一次从丢插件到热更新的完整排障
运维·elasticsearch·docker·中文分词·ik分词
小白的码BUG之路1 天前
Jenkins -- gitee+docker+harbor+k8s 部署项目
docker·gitee·jenkins
AlfredZhao1 天前
Docker Compose 平滑切换环境变量文件,容器配置不残留
docker
duansamve2 天前
Python3+Flask+PostgreSQL18+Vue3项目生产环境用docker如何部署?
python·docker·flask