使用 Docker 快速搭建 MinIO 文件存储服务

在日常开发中,我们经常需要处理文件上传、下载、存储与访问的场景,比如图片、视频、日志文件、模型数据集等。传统的文件系统难以满足高并发、分布式部署以及云原生化的需求。而 MinIO 作为一款高性能、轻量级、兼容 Amazon S3 协议的对象存储服务,正是为此而生。

本文将带你从零开始,通过 Docker 部署 MinIO 服务,并结合 Java SDK 实现文件的上传与访问。

无论你是想在本地搭建一个轻量文件中心,还是为企业内部系统构建一个可扩展的对象存储方案,这篇文章都能帮你快速上手。

1 拉取 Minio 镜像

2025年2月,MinIO社区版以"精简控制台"为由删除11万行代码,彻底移除了Web管理功能。官方声明直白要求:"需要图形界面的用户请迁移至商业产品AiStor"。这一举动被社区视为对开源精神的背叛,引发开发者强烈抗议。

这个是最后的完美版本

复制代码
docker pull minio/minio:RELEASE.2025-04-22T22-12-26Z

2 启动 Minio 容器

我们假设你希望访问端口为 9000(API)和 9001(Web 控制台),可以这样运行:

复制代码
mkdir minio && cd minio
docker run -d \
  --name minio \
  -p 9000:9000 \
  -p 9001:9001 \
  -v ./data:/data \
  -v ./config:/root/.minio \
  -e "MINIO_ROOT_USER=admin" \
  -e "MINIO_ROOT_PASSWORD=admin123456" \
  minio/minio:RELEASE.2025-04-22T22-12-26Z \
  server /data --console-address ":9001"

01 参数说明

  • -p 9000:9000:MinIO API 服务端口
  • -p 9001:9001:Web 控制台端口
  • -v ./data:/data:映射数据目录
  • -v ./config:/root/.minio:保存配置
  • MINIO_ROOT_USERMINIO_ROOT_PASSWORD:管理员账号密码
  • server /data --console-address ":9001":指定数据目录并启用控制台端口

02 启动后访问

3 上传文件

MinIO (以及所有兼容 S3 的对象存储系统)中,桶(Bucket) 是最顶层的逻辑存储单元,可以理解为一个"命名空间"或"大文件夹",它是所有对象(文件)的容器。

MinIO 不存在真正的目录结构,而是通过对象 key 的前缀来模拟目录层级

例如,我们可以创建一个 bucket 叫 datasets ,数据集下面的文件对象如下:

复制代码
datasets/
 ├── mydataset1/
 │    ├── train/image1.jpg
 │    └── train/image2.jpg
 └── mydataset2/
      ├── data.csv
      └── labels.txt

虽然看起来像目录树,但实际上存储系统中只有对象:

复制代码
datasets/mydataset1/train/image1.jpg
datasets/mydataset1/train/image2.jpg
datasets/mydataset2/data.csv
datasets/mydataset2/labels.txt

MinIO 客户端(mc)或 SDK(Java/Python)在列举对象时,会自动把这些前缀识别为"目录"。

接下来,我们按照流程上传文件。

1、创建桶 datasets

2、创建新路径 mydataset1

3、上传图片

4 访问授权

1、修改桶的访问策略

图中,我们需要将访问策略从 Private 修改成 Public 。

2、访问图片

MinIO 地址:http://localhost:9000

桶名:datasets

对象路径:mydataset1/父与女.png

因为桶已经设置为 Public ,所以我们可以直接访问如下的链接即可:

http://localhost:9000/datasets/mydataset1/父与女.png

相关推荐
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工2 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn862 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智2 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_2 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉2 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦2 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
2601_961875242 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant