3. MinIO 环境搭建:Docker 部署与基础操作

MinIO 是高性能、S3 兼容的对象存储系统,适合作为 Go 对象存储边界发布与回滚的底层存储引擎。本章使用 Docker 快速搭建 MinIO 单节点环境,并完成控制台基础操作:创建桶、上传对象、设置访问策略。

3.1 使用 Docker 部署 MinIO 单节点

单节点部署适用于开发测试与课程实验。以下命令启动一个 MinIO 容器,同时暴露 API 端口(9000)与控制台端口(9001)。

docker run -d \
  --name minio-single \
  -p 9000:9000 \
  -p 9001:9001 \
  -e MINIO_ROOT_USER=admin \
  -e MINIO_ROOT_PASSWORD=admin123 \
  -v /data/minio:/data \
  quay.io/minio/minio server /data --console-address ":9001"
参数说明:
  • -p 9000:9000:S3 兼容 API 端口,Go SDK 通过此端口连接。
  • -p 9001:9001:Web 控制台端口,浏览器访问管理界面。
  • MINIO_ROOT_USER / MINIO_ROOT_PASSWORD:管理员凭据,生产环境应使用强密码。
  • -v /data/minio:/data:持久化数据卷,容器重启后数据不丢失。

启动后验证容器状态:

docker ps | grep minio-single

浏览器访问 http://localhost:9001,使用 admin / admin123 登录 MinIO 控制台。

3.2 MinIO 控制台基础操作

控制台提供可视化的桶管理、对象浏览、访问策略配置和监控面板。以下为登录后的核心界面区域:

区域 功能 操作入口
左侧导航栏 桶列表、对象浏览器、身份管理、监控 点击图标切换
桶列表页 显示所有桶名称、大小、对象数量、创建时间 默认首页
对象浏览器 进入桶后浏览/上传/下载/删除对象 点击桶名称
访问策略 为桶或用户设置读写权限(ReadOnly / ReadWrite / Private) 桶设置 → Access Policy
身份管理 创建服务账号、配置策略、管理用户组 左侧 Identity
安全提示: 控制台默认使用 HTTP,生产环境应配置 TLS 证书。开发阶段如需远程访问,建议通过 SSH 隧道或 VPN,避免将 9001 端口直接暴露在公网。

3.3 创建桶与上传对象

桶(Bucket)是对象存储的逻辑容器,类似于文件系统的目录。以下通过控制台完成桶创建与对象上传。

步骤 1:创建桶

  1. 登录控制台后,点击左侧 Buckets → 右上角 Create Bucket。
  2. 输入桶名称(全局唯一,仅支持小写字母、数字、短横线,例如 go-release-artifacts)。
  3. 选择版本控制(Versioning):课程实验建议开启,便于后续回滚演示。
  4. 点击 Create 完成。

步骤 2:上传对象

  1. 在桶列表页点击刚创建的桶名称,进入对象浏览器。
  2. 点击 Upload → Upload File。
  3. 选择本地文件(例如 release-v1.0.0.tar.gz),上传后自动显示在对象列表中。
  4. 点击对象右侧的 ... → Share 可生成预签名 URL(临时下载链接)。

步骤 3:设置桶访问策略(可选)

若需要公开读取桶内对象(例如静态资源分发),可在桶设置中修改 Access Policy:

  • Private:仅拥有者读写(默认)。
  • ReadOnly:允许匿名读取对象列表与下载。
  • ReadWrite:允许匿名上传与删除(高风险,谨慎使用)。
实验建议: 课程后续章节将使用 Go SDK 操作 MinIO,建议在控制台先手动创建 2~3 个桶(如 go-release-artifacts、go-rollback-snapshots、go-temp-staging),并上传几个不同版本的对象文件,为边界发布与回滚测试准备数据。

3.4 MinIO 单节点架构示意

下图展示 Docker 部署的 MinIO 单节点内部组件关系:API 网关接收 S3 请求,控制台提供 Web 管理,数据写入本地卷持久化。

MinIO 单节点 Docker 部署架构 Docker 容器 (minio-single) S3 API 网关 端口 9000 Web 控制台 端口 9001 本地数据卷 /data 对象持久化存储 Go SDK / S3 客户端 浏览器 (控制台) 数据持久化

3.5 验证部署:使用 mc 客户端(可选)

MinIO 官方命令行工具 mc 可快速验证 API 连通性:

# 在宿主机安装 mc(或使用 Docker 镜像)
docker run --rm --net=host quay.io/minio/mc alias set local http://localhost:9000 admin admin123

# 列出所有桶
docker run --rm --net=host quay.io/minio/mc ls local

# 创建桶
docker run --rm --net=host quay.io/minio/mc mb local/go-release-artifacts

# 上传文件
docker run --rm --net=host -v /tmp:/tmp quay.io/minio/mc cp /tmp/test.txt local/go-release-artifacts/
mc 优势: 无需登录控制台即可完成桶与对象管理,适合脚本化批量操作。课程后续章节将使用 Go SDK 替代 mc,实现程序化对象存储管理。

3.6 常见问题与排查

问题 可能原因 解决方法
控制台无法访问 端口映射错误或防火墙拦截 检查 docker ps 端口映射;宿主机防火墙放行 9001
API 连接被拒绝 MinIO 未启动或端口冲突 docker logs minio-single 查看启动日志
上传文件失败 桶不存在或权限不足 确认桶名称正确;检查 Access Policy 是否为 Private
数据卷权限错误 宿主机目录权限不足 chmod 777 /data/minio 或使用 Docker 卷驱动