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

MinIO 新版本 Docker 部署与 CLI 管理指南

综述由AI生成针对 MinIO 安全漏洞(CVE-2025-62506),建议升级至 RELEASE.2025-10-15T17-29-55Z 版本。由于新版开源社区版本阉割了 Web 控制台功能且不再提供预编译镜像,需通过源码构建 Docker 镜像并配合 Docker Compose 部署。管理方式转为使用 mc 命令行工具,支持 Bucket 管理、对象操作及生命周期配置(ILM)。提供了多阶段构建 Dockerfile 示例及 Compose 编排配置,实现快速落地与运维。

FrontendX发布于 2026/4/6更新于 2026/5/2139 浏览
MinIO 新版本 Docker 部署与 CLI 管理指南

一、背景

  • 安全事件:MinIO 安全漏洞(CVE-2025-62506)
  • 建议升级到 RELEASE.2025-10-15T17-29-55Z 或更高版本。

二、新版本变动

  • 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:生成最终镜像
# 官方的 minio 镜像自带了 mc 命令
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" minio-net
version:"3.8"
services:
  minio:
    image: minio:minio
    # 如果本地构建镜像,用 build 指令替代 image:
    # build:
    #   context: .
    #   dockerfile: Dockerfile
    container_name: minio
    networks:
      - minio-net
    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: admin
      MINIO_ROOT_PASSWORD: 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
    container_name: minio-init
    depends_on:
      minio:
        condition: service_healthy
    networks:
      - minio-net
    volumes:
      - ./mc-config:/tmp/.mc:rw
    entrypoint: >
      /bin/sh -c " /usr/bin/mc alias set minio http://minio:9000 admin 'password'; /usr/bin/mc mb minio/admin; /usr/bin/mc ls minio; exit 0; "
networks:
  minio-net:
    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/admin # 创建 bucket
# mc ls minio # 列出 bucket
# mc rb minio/test-bucket --force # 强制删除 bucket,即使含有文件
  • object 文件管理:
# echo "This is my test file!" > test.txt
# mc cp test.txt minio/admin/test.txt # 上传测试文件
# mkdir testdir
# echo "This is my test02 file!" > testdir/test02.txt
# mc cp testdir minio/admin --recursive # 上传测试目录,且递归上传该目录下的所有文件
# mc ls minio/admin # 查看 minio 存储
# mkdir download
# mc cp minio/admin/test01.txt download/ # 下载文件
# mc cp minio/admin/testdir download/ --recursive # 下载目录,且递归下载
# mc rm minio/admin/test01.txt # 删除文件
# mc rm minio/admin/testdir --recursive --force # 删除目录,即使包含文件
# mc ls minio/admin # 查看 minio 存储
  • 桶匿名策略(公开/私有):
mc anonymous set public minio/admin
mc anonymous set private minio/admin
  • 创建 ACCESS_KEY 和 SECRET_KEY:
# 创建 ACCESS_KEY 和 SECRET_KEY
mc admin user add minio 11fz7gXVnNjvjEDq2qez jj6r9Hu2gtueIQFSV35FzKcvGtK1G61d9ieNmKDg
# 修改用户权限
mc admin policy attach minio readwrite --user 11fz7gXVnNjvjEDq2qez

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

概念:

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

基础规则示例:

  • 将 logs/ 前缀下对象在 30 天后过期
mc ilm rule add minio/admin \
  --prefix "logs/" \
  --expiry-days 30
  • 将 logs/ 前缀下对象在 30 天后过期,非当前版本 7 天清理:
mc ilm rule add minio/admin \
  --prefix "logs/" \
  --expiry-days 30 \
  --noncurrent-expire-days 7
  • 查看与删除规则:
mc ilm rule ls minio/admin
mc ilm rule rm minio/admin --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/admin ilm.json
mc ilm export minio/admin

七、总结

  • 新版本不再提供 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 镜像自带了 mc 命令
  9. 定义 MINIO 版本
  10. 四、使用 Docker Compose 快速运行 MinIO
  11. 创建 docker 自定义网桥
  12. 五、Web 控制台阉割功能的替代:使用 mc 命令
  13. mc mb minio/admin # 创建 bucket
  14. mc ls minio # 列出 bucket
  15. mc rb minio/test-bucket --force # 强制删除 bucket,即使含有文件
  16. echo "This is my test file!" > test.txt
  17. mc cp test.txt minio/admin/test.txt # 上传测试文件
  18. mkdir testdir
  19. echo "This is my test02 file!" > testdir/test02.txt
  20. mc cp testdir minio/admin --recursive # 上传测试目录,且递归上传该目录下的所有文件
  21. mc ls minio/admin # 查看 minio 存储
  22. mkdir download
  23. mc cp minio/admin/test01.txt download/ # 下载文件
  24. mc cp minio/admin/testdir download/ --recursive # 下载目录,且递归下载
  25. mc rm minio/admin/test01.txt # 删除文件
  26. mc rm minio/admin/testdir --recursive --force # 删除目录,即使包含文件
  27. mc ls minio/admin # 查看 minio 存储
  28. 创建 ACCESSKEY 和 SECRETKEY
  29. 修改用户权限
  30. 六、MinIO 对象生命周期管理(ILM)配置说明
  31. 概念:
  32. 基础规则示例:
  33. 七、总结
  34. 八、参考
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 基于 Rust 实现 GitHub Trending 热门仓库爬虫
  • 企业级大模型技术落地场景全解析
  • VR、具身智能与人形机器人:通往现实世界的智能接口
  • Python 构建地方政府公开数据爬虫:政策与数据全维度抓取及反爬适配
  • Stable Diffusion 与 Z-Image-Turbo 快速部署及效果对比
  • 软件测试人员必备的 AI 工具清单:接口、UI 与自动化
  • 自然语言处理在法律领域的应用与实战
  • CoWoS 封装技术解析:架构、演进与 AI 应用
  • RxHttp Android HTTP 请求框架使用指南
  • 雷达信号处理中的 CFAR 技术详解
  • Python 快速入门教程
  • Windows 下使用 Git 从 GitHub 拉取项目到本地的完整步骤
  • Palantir 产品架构调研
  • 华为 OD 机试双机位 C 卷 - 叠积木
  • OpenClaw 本地 AI 助手飞书对接部署指南
  • 使用 Python + Flask + Tailwind 快速搭建个人博客
  • FaceFusion、Stable Diffusion 与 DeepFaceLive 技术路线深度对比
  • Python 与 Jupyter Notebook 数据可视化入门
  • 2026 年 5 月起民用无人机新规实施:实名登记与激活要求详解
  • NoSQLUnit 核心功能与使用指南

相关免费在线工具

  • 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