跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

MinIO 新版本 Docker 部署指南:CLI 管理替代 Web 控制台

MinIO 因安全漏洞建议升级至 RELEASE.2025-10-15T17-29-55Z 版本,新版开源社区版 Web 控制台功能受限,需通过源码构建镜像并使用 mc 命令行工具进行管理。基于多阶段构建的 Docker 镜像封装方法,以及利用 Docker Compose 编排单实例部署流程,包括网络配置、数据卷挂载及初始化容器设置。同时详细说明了如何使用 mc 命令进行桶管理、对象操作、权限分配及生命周期策略(ILM)配置,确保在移除 Web 依赖后仍能高效运维 MinIO 服务。

清心发布于 2026/4/5更新于 2026/7/2566 浏览
MinIO 新版本 Docker 部署指南:CLI 管理替代 Web 控制台

一、背景

  • 安全事件:MinIO 安全漏洞(CVE-2025-62506),漏洞说明:https://avd.aliyun.com/detail?id=AVD-2025-62506
  • 建议升级到 RELEASE.2025-10-15T17-29-55Z 或更高版本。

二、新版本变动

[图片:Web 控制台功能阉割示意]

  • Web 控制台功能阉割:
    • 开源社区版本,内置 Web 管理界面不再提供除了创建 bucket 以外的功能。
    • 官方不再提供 Docker 镜像与预编译二进制,需要自行从源码编译并封装镜像。
    • 推荐部署路径:源码构建 + 自制 Docker 镜像 + Docker Compose 编排。
    • Issues: https://github.com/minio/minio/issues/21647

开源社区版本分发调整:

[图片:开源社区版本分发调整]

三、自己动手封装镜像

  • 实现方式:多阶段构建,第一阶段拉源并编译成二进制文件,第二阶段生成最小运行镜像。
  • 参考官方提供的 Dockerfile:https://github.com/minio/minio/blob/master/Dockerfile
# 阶段 1:依赖下载层
FROM golang:1.24.11-alpine3.23 AS builder
# 定义 MINIO 版本
ARG MINIO_VERSION=RELEASE.2025-10-15T17-29-55Z
WORKDIR /app
# 下载 minio 并构建二进制文件
RUN wget https://github.com/minio/minio/archive/refs/tags/${MINIO_VERSION}.tar.gz \
  && tar -zxvf ${MINIO_VERSION}.tar.gz \
  && rm -rf ${MINIO_VERSION}.tar.gz \
  && export GOPROXY=https://mirrors.cloud.tencent.com/go/ \
  && cd minio-${MINIO_VERSION} \
  && go mod tidy \
  && go build
# 阶段 2:生成最终镜像
FROM minio/minio:latest
# 定义 MINIO 版本
ARG MINIO_VERSION=RELEASE.2025-10-15T17-29-55Z
COPY --from=builder /app/minio-${MINIO_VERSION}/minio /usr/bin/minio
COPY --from=builder /app/minio-${MINIO_VERSION}/dockerscripts/docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
RUN chmod -R 777 /usr/bin && chmod +x /usr/bin/docker-entrypoint.sh
ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]
VOLUME ["/data"]
CMD ["minio"]
  • 构建命令:
MINIO_VERSION=RELEASE.2025-10-15T17-29-55Z docker build -t minio:${MINIO_VERSION} --build-arg MINIO_VERSION=${MINIO_VERSION}

四、使用 Docker Compose 快速运行 MinIO

  • 目标:配置环境变量、数据卷与健康检查,快速启动单实例。
  • 初始化:运行了一个 minio-init 容器,用于 minio 的初始化,创建桶等一些操作。
  • ⚠️注意:需要先创建一个自定义 docker 网桥;凭证使用 MINIO_ROOT_USER/MINIO_ROOT_PASSWORD。
# 创建 docker 自定义网桥 docker network create -d bridge --subnet "10.22.33.0/24" --gateway "10.22.33.1" srebro
version: "3.8"
services:
  minio:
    # 如果本地构建镜像,用 build 指令替代 image
    # build:
    #   context: .
    #   dockerfile: Dockerfile
    image: minio:minio:RELEASE.2025-10-15T17-29-55Z
    container_name: minio
    networks:
      - srebro
    ports:
      - 9000:9000
      - 9001:9001
    volumes:
      - ./data:/data
      - ./mc-config:/tmp/.mc:rw
      - /etc/localtime:/etc/localtime:ro
      - /usr/share/zoneinfo:/usr/share/zoneinfo:ro
    environment:
      MINIO_ROOT_USER: <MINIO_ROOT_USER>
      MINIO_ROOT_PASSWORD: <MINIO_ROOT_PASSWORD>
      TZ: Asia/Shanghai
    command: server /data --console-address :9001
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 10s
      timeout: 5s
      retries: 10
    restart: unless-stopped
  minio-init:
    image: minio:minio:RELEASE.2025-10-15T17-29-55Z
    container_name: minio-init
    depends_on:
      minio:
        condition: service_healthy
    networks:
      - srebro
    volumes:
      - ./mc-config:/tmp/.mc:rw
    entrypoint: >
      /bin/sh -c " /usr/bin/mc alias set minio http://minio:9000 <MINIO_ROOT_USER> '<MINIO_ROOT_PASSWORD>'; /usr/bin/mc mb minio/<BUCKET_NAME>; /usr/bin/mc ls minio; exit 0; "
networks:
  srebro:
    external: true
  • 启动与查看:
docker compose up -d
docker compose ps
docker compose logs -f minio

五、Web 控制台阉割功能的替代:使用 mc 命令

上面的容器都内置了 mc 命令,使用一个 JSON 格式的配置文件来存储某些类型的信息,比如为每个配置的 S3 兼容服务设置的别名。mc 的配置文件也都持久化了,可直接使用,管理 minio

  • 登陆容器,运行 mc 命令
docker exec -it minio bash
mc --version
  • 查看 mc 配置
mc alias ls
  • bucket 管理:
# mc mb minio/<BUCKET_NAME> # 创建 bucket
# mc ls minio # 列出 bucket
# mc rb minio/<BUCKET_NAME> --force # 强制删除 bucket,即使含有文件
  • object 文件管理:
# echo "This is my test file!" > test.txt
# mc cp test.txt minio/<BUCKET_NAME>/test.txt # 上传测试文件
# mkdir testdir
# echo "This is my test02 file!" > testdir/test02.txt
# mc cp testdir minio/<BUCKET_NAME> --recursive # 上传测试目录,且递归上传该目录下的所有文件
# mc ls minio/<BUCKET_NAME> # 查看 minio 存储
# mkdir download
# mc cp minio/<BUCKET_NAME>/test01.txt download/ # 下载文件
# mc cp minio/<BUCKET_NAME>/testdir download/ --recursive # 下载目录,且递归下载
# mc rm minio/<BUCKET_NAME>/test01.txt # 删除文件
# mc rm minio/<BUCKET_NAME>/testdir --recursive --force # 删除目录,即使包含文件
# mc ls minio/<BUCKET_NAME> # 查看 minio 存储
  • 桶匿名策略(公开/私有):
mc anonymous set public minio/<BUCKET_NAME>
mc anonymous set private minio/<BUCKET_NAME>
  • 创建 ACCESS_KEY 和 SECRET_KEY:
# 创建 ACCESS_KEY 和 SECRET_KEY
mc admin user add minio <ACCESS_KEY> <SECRET_KEY>
# 修改用户权限
mc admin policy attach minio readwrite --user <ACCESS_KEY>

六、MinIO 对象生命周期管理(ILM)配置说明

概念:

  • MinIO 的对象生命周期管理(Object Lifecycle Management, ILM)是一项自动化策略引擎,用于根据用户定义的规则自动管理对象的存储状态,包括过期删除、存储类转换(降本)、版本清理等。其核心目标是简化数据全生命周期的成本控制和合规性管理,尤其适用于海量数据存储场景。
  • 规则按桶与前缀匹配,控制对象过期与非当前版本(启用版本化后)的清理。

基础规则示例:

  • 将 logs/ 前缀下对象在 30 天后过期
mc ilm rule add minio/<BUCKET_NAME> \
  --prefix "logs/" \
  --expiry-days 30
  • 将 logs/ 前缀下对象在 30 天后过期,非当前版本 7 天清理:
mc ilm rule add minio/<BUCKET_NAME> \
  --prefix "logs/" \
  --expiry-days 30 \
  --noncurrent-expire-days 7
  • 查看与删除规则:
mc ilm rule ls minio/<BUCKET_NAME>
mc ilm rule rm minio/<BUCKET_NAME> --id <rule-id>
  • 按 JSON 导入(便于审计与版本管理):
cat > ilm.json <<'EOF'
{
  "Rules": [
    {
      "ID": "expire-logs-30d",
      "Status": "Enabled",
      "Filter": { "Prefix": "logs/" },
      "Expiration": { "Days": 30 },
      "NoncurrentVersionExpiration": { "NoncurrentDays": 7 }
    }
  ]
}
EOF
mc ilm import minio/<BUCKET_NAME> ilm.json
mc ilm export minio/<BUCKET_NAME>

七、总结

  • 新版本不再提供 Docker 镜像和预编译好的二进制文件,需要大家自行编译与封装镜像。
  • Web 控制台功能阉割后,可用 mc 命令完成用户、策略、桶、版本化、ILM 等管理操作。
  • 因 CVE-2025-62506,应尽快升级到 RELEASE.2025-10-15T17-29-55Z 或更高版本;通过 Dockerfile 多阶段构建与 Docker Compose 可快速落地与运维。

八、参考

  • https://github.com/minio/minio/issues/21647
  • https://docs.min.io/enterprise/aistor-object-store/

目录

  1. 一、背景
  2. 二、新版本变动
  3. 三、自己动手封装镜像
  4. 阶段 1:依赖下载层
  5. 定义 MINIO 版本
  6. 下载 minio 并构建二进制文件
  7. 阶段 2:生成最终镜像
  8. 定义 MINIO 版本
  9. 四、使用 Docker Compose 快速运行 MinIO
  10. 创建 docker 自定义网桥
  11. 五、Web 控制台阉割功能的替代:使用 mc 命令
  12. mc mb minio/<BUCKET_NAME> # 创建 bucket
  13. mc ls minio # 列出 bucket
  14. mc rb minio/<BUCKET_NAME> --force # 强制删除 bucket,即使含有文件
  15. echo "This is my test file!" > test.txt
  16. mc cp test.txt minio/<BUCKET_NAME>/test.txt # 上传测试文件
  17. mkdir testdir
  18. echo "This is my test02 file!" > testdir/test02.txt
  19. mc cp testdir minio/<BUCKET_NAME> --recursive # 上传测试目录,且递归上传该目录下的所有文件
  20. mc ls minio/<BUCKET_NAME> # 查看 minio 存储
  21. mkdir download
  22. mc cp minio/<BUCKET_NAME>/test01.txt download/ # 下载文件
  23. mc cp minio/<BUCKET_NAME>/testdir download/ --recursive # 下载目录,且递归下载
  24. mc rm minio/<BUCKET_NAME>/test01.txt # 删除文件
  25. mc rm minio/<BUCKET_NAME>/testdir --recursive --force # 删除目录,即使包含文件
  26. mc ls minio/<BUCKET_NAME> # 查看 minio 存储
  27. 创建 ACCESSKEY 和 SECRETKEY
  28. 修改用户权限
  29. 六、MinIO 对象生命周期管理(ILM)配置说明
  30. 概念:
  31. 基础规则示例:
  32. 七、总结
  33. 八、参考
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 宇树机器人 G1 二次开发:导航仿真与地图转换教程
  • Windows 11 配置 CUDA 版 llama.cpp 实现本地大模型离线聊天
  • Windows 11 本地部署 Qwen3.5 量化模型实测
  • Claude Code 中 CLAUDE.md 的加载时机与书写最佳实践
  • TRAE、Qoder、Cursor 与 GitHub Copilot 深度对比:AI 编程工具选型指南
  • LangBot 企业级即时通讯 AI 机器人平台
  • Stable Diffusion 秋叶整合包部署与实战指南
  • 主流 AI 编程工具选型指南:Copilot、Cursor 与 Trae 对比
  • 基于 ESP32 的无人机合规识别:ArduRemoteID 方案详解
  • Spring Cloud 微服务:Sentinel vs Resilience4j 深度对比与选型指南
  • 异构算力部署通义万相 2.1 文生图技术解析
  • SQL Server 2022 安装教程
  • Freqtrade 新手教程:macOS Docker 部署及回测实战
  • MiniOneRec 技术解读:基于 LLM 的生成式推荐框架
  • OpenClaw 飞书机器人配置指南:聊天下达 AI 指令
  • 雷达信号处理中的恒虚警(CFAR)技术详解
  • OpenAI Codex 全面上手指南
  • Python 爬虫实战:爬取飞猪旅行酒店套餐信息
  • AI 生成 UI 缺乏设计感?三步提升前端页面质感
  • Java JDK 下载与安装配置

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online