Skip to content

MinIO安装与使用

MinIO

介绍

MinIO 是一个高性能的、与 S3 兼容的对象存储服务器。你可以把它想象成一个可以在你自己的服务器、虚拟机或 Kubernetes 集群中运行的私有版 AWS S3。

  • 作用:它的核心作用是存储数据。它提供了一个高可用、可扩展的平台,用于存放海量的非结构化数据,如图片、视频、日志文件、备份等。
  • 接口:它通过 S3 API 暴露其功能。这意味着任何能与 S3 通信的工具,理论上都可以与 MinIO 通信。

注意:MinIO项目开源版本已不再维护,新版本不包含完整的WEB界面

安装与配置

使用Docker安装

shell
docker pull minio/minio:RELEASE.2025-04-22T22-12-26Z

运行 MinIO 容器:指定一个本地目录作为 MinIO 的数据存储位置。这里我们将本地的 /data/minio 目录映射到容器内部的 /data 目录。

  • -d: 后台运行容器。
  • --name minio-server: 给容器起一个名字,方便管理。
  • -p 9000:9000: 将容器的 9000 端口(API 端口)映射到主机的 9000 端口。
  • -p 9001:9001: 将容器的 9001 端口(Web 控制台端口)映射到主机的 9001 端口。
  • -v /data/minio:/data: 将主机的 /data/minio 目录挂载到容器的 /data 目录。所有上传到 MinIO 的数据都会持久化到这个本地目录。
  • -e "MINIO_ROOT_USER=admin": 设置 MinIO 的根用户(用户名)。
  • -e "MINIO_ROOT_PASSWORD=minio123456": 设置 MinIO 的根密码。请务必在生产环境中使用一个强密码!
  • minio/minio server /data: 启动 MinIO 服务器,并指定 /data 作为数据存储目录。
  • --console-address ":9001": 指定 Web 控制台监听在 9001 端口。
shell
# 创建本地数据目录
mkdir -p /data/minio

# 运行 MinIO 容器
docker run -d \
  --name minio-server \
  -p 9000:9000 \
  -p 9001:9001 \
  -v /data/minio:/data \
  -e "MINIO_ROOT_USER=admin" \
  -e "MINIO_ROOT_PASSWORD=minio123456" \
  minio/minio:RELEASE.2025-04-22T22-12-26Z server /data --console-address ":9001"

访问 MinIO

容器启动后,可以通过以下方式访问 MinIO:

  • Web 控制台: 在浏览器中打开 http://<你的服务器IP>:9001。使用你刚才设置的用户名 admin 和密码 minio123456 登录。示例:http://127.0.0.1:9001/browser
  • API 接口: 应用程序可以通过 http://<你的服务器IP>:9000 访问 MinIO 的 S3 兼容 API。

image-20260104084318130

创建和管理存储桶

存储桶(Bucket)是 MinIO 中最高级别的容器,类似于文件系统中的文件夹,但它是用于存储对象(Object)的顶层容器。

创建存储桶 (Create Bucket)

  1. 点击右下角的 “Create Bucket” 按钮。
  2. 输入一个唯一的、符合 DNS 规范的名称(例如 my-first-bucket)。
  3. (可选)你可以启用 Versioning(版本控制),这样当你上传同名文件时,旧版本不会被覆盖,而是会被保留。

image-20260104084913033

上传文件 (Upload Files)

  1. 进入你刚刚创建的存储桶。
  2. 点击 “Upload” 按钮。
  3. 你可以选择 “Upload File” 上传单个文件,或 “Upload Folder” 上传整个文件夹。
  4. 选择文件后,点击 “Upload” 即可。上传的文件就是 MinIO 中的 “对象”。

管理对象 (Manage Objects)

  • 下载 (Download):点击文件名或右侧的下载图标。
  • 分享 (Share):生成一个带有时效性的、可公开访问的下载链接。这是非常实用的功能。
  • 删除 (Delete):删除一个或多个文件。
  • 复制 / 移动 (Copy/Move):在不同存储桶之间移动或复制文

访问密钥与权限管理

不要将 root 用户(admin)直接提供给所有应用或用户。MinIO 提供了强大的身份与访问管理(IAM)功能。

创建访问密钥 (Access Keys):这是给应用程序使用的凭证,而不是给人登录控制台的。

  1. 点击左侧导航栏的 “Access Keys”。
  2. 点击 “Create access key”。
  3. 系统会生成一个 Access Key 和一个 Secret Key。请立即复制并妥善保管它们,因为关闭窗口后 Secret Key 将无法再次查看。
  4. 应用程序在连接 MinIO 时,就会使用这对密钥。

创建并分配策略 (Policies):策略定义了访问密钥能做什么、不能做什么。

  1. 点击左侧导航栏的 “Policies”。
  2. 你可以使用内置策略(如 readwrite),点击复制
  3. 回到访问密钥,点击编辑,粘贴策略

image-20260104173503104

json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::*"
            ]
        }
    ]
}

用户管理

创建用户 (Users):这是给人使用的凭证,他们可以用这个用户名和密码登录 Web 控制台。

  1. 点击左侧导航栏的 “Users”。
  2. 点击 “Create User”。
  3. 输入用户名和密码。
  4. 重要:刚创建的用户默认没有任何权限。你需要为其分配策略(Policy)。

创建并分配策略 (Policies):策略定义了用户或访问密钥能做什么、不能做什么。

  1. 点击左侧导航栏的 “Policies”。
  2. 你可以使用内置策略(如 readwritereadonly),也可以点击 “Create Policy” 创建自定义策略。
  3. 例如,创建一个只允许用户对 my-first-bucket 进行读写的策略:
  4. 创建策略后,回到 “Users” 页面,编辑你想授权的用户,在 “Policies” 标签页下,将刚刚创建的策略分配给该用户。
json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::my-first-bucket",
                "arn:aws:s3:::my-first-bucket/*"
            ]
        }
    ]
}