【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 可视化管理控制台(浏览器访问)
相关推荐
吴声子夜歌11 小时前
Docker入门与实战——热门镜像介绍
运维·docker·容器
方便面不加香菜11 小时前
容器虚拟化基础--CGroups资源控制
运维·docker·容器
BioRunYiXue11 小时前
使用docker分析高通量测序数据
java·数据库·人工智能·spring cloud·docker·tomcat·html
吴声子夜歌14 小时前
Docker入门与实战——Docker命令查询
docker·容器
handonch14 小时前
金仓 KingbaseES 时区问题根治指南:从「总是差 8 小时」到全链路统一
linux·docker·postgresql·信创
吴声子夜歌15 小时前
Docker入门与实战——常见问题总结
运维·docker·容器
马立杰17 小时前
Docker Build 编译补丁版 PHP7.4 FPM 容器镜像教程(CVE-2026-109618 CVE-2026-109619)
运维·docker·容器·php
tedcloud12318 小时前
Docker Compose 部署 Memos:从安装到备份恢复
linux·开发语言·jvm·后端·docker·容器·rust
无人生还别怕18 小时前
如何搭建k8s服务(docker部署)
linux·运维·docker·云原生·容器·kubernetes·openanolisos
*星星之火*19 小时前
【无标题】
docker·gcp·gke