Skip to content

🚀 使用 Docker Compose 部署 MinIO

MinIO 是一款基于 Go 语言编写的开源对象存储系统,它兼容 Amazon S3 云存储服务接口,非常适合存储图片、视频、日志文件等非结构化数据。通过 Docker Compose 部署 MinIO,可以简化安装过程,并确保环境一致性。

📦 项目简介

MinIO 的核心目标是提供一个高性能、轻量级的对象存储解决方案。它与所有官方 AWS S3 SDK 和工具完全兼容,让你可以在自己的基础设施上享受类似 S3 的存储服务。

主要功能特点: * 🔒 数据安全:使用 MinIO Erasure Code(纠删码)来防止硬件故障,即便损坏一半以上的硬盘,仍然可以从中恢复。 * ⚡ 高性能:作为高性能对象存储,在标准硬件条件下它能达到很高的读写速率。 * 🌐 可扩展性:不同 MinIO 集群可以组成联邦,并形成一个全局的命名空间,跨越多个数据中心。 * 🛠️ 开发者友好:提供友好的 Web 操作界面,丰富的 API,并支持多种编程语言的 SDK。 * ☁️ 云原生友好:完美集成 Kubernetes、Docker、Prometheus 等云原生工具。

⚙️ 部署前准备

  1. 环境要求

    • 已安装 DockerDocker Compose(这是运行 MinIO 的必备条件)。
    • 系统内存:建议 1GB 以上。
    • 确保服务器的 9000 和 9001 端口未被占用。
  2. 环境检查 在终端中执行以下命令,确认 Docker 环境正常: bash docker --version docker-compose --version

  3. 创建项目目录 建议创建一个独立的目录来管理 MinIO 的所有文件。 bash mkdir -p /opt/docker/minio cd /opt/docker/minio

🛠️ 配置 Docker Compose

基于你提供的配置,这里是对 docker-compose.yml 文件的优化和完整说明:

services:
    minio:
        image: minio/minio:latest  # 官方最新镜像(稳定更新,兼容性好)
        container_name: minio  # 官方最新镜像(稳定更新,兼容性好)
        restart: always            # 容器退出后自动重启(开机自启,确保服务不中断)
        #mem_limit: 1G
        ports:
            - '9000:9000'            # S3 API 端口映射:主机 9000 → 容器 9000
            - '9001:9001'            # Web 控制台端口映射:主机 9001 → 容器 9001
        environment:
            PUID: 1000            # Web 控制台端口映射:主机 9001 → 容器 9001
            PGID: 1000              # 运行用户组 ID(与 PUID 一致)
            MINIO_ROOT_USER: admin # MinIO 管理员账号(**必须修改!建议用复杂用户名**)
            MINIO_ROOT_PASSWORD: adminadmin1 # MinIO 管理员账号(**必须修改!建议用复杂用户名**)
            # 可选:如需配置外部访问,取消注释并修改以下变量
            #MINIO_SERVER_URL: https://xs.clxr30.top/  # 可选:绑定自定义域名(需配置 HTTPS)
            #MINIO_BROWSER_REDIRECT_URL: https://xs.clxr30.top/minio/ui  # 可选:控制台自定义访问地址
        volumes:
            #- ./data:/data # 数据存储目录

            # 数据存储目录:主机 /mnt/10t/file/minio_data → 容器 /data(核心!所有上传文件存在这里)
            - /mnt/10t/file/minio_data:/data # 数据存储目录
            #cp -rv /home/compose/minio/data /mnt/10t/file/minio_data

            # 配置目录:主机 ./minio → 容器 /root/.minio(保存密钥、桶配置等,避免重启丢失)
            - ./minio:/root/.minio
        command: server /data --console-address ":9001"  # 启动命令:指定数据目录和控制台端口
        healthcheck:  #健康检查:定期验证服务是否可用,失败会自动重启容器
            test: ['CMD', 'mc', 'ready', 'local']
            interval: 5s
            timeout: 5s
            retries: 5
#VPS版配置
#docker network create custom   创建网络
#version: '2'
#version: '3' 
# docker-compose.yaml
#version: '3'

services:
    minio:
        image: minio/minio:latest
        container_name: minio
        restart: always
        #mem_limit: 1G
        ports:
            - '9000:9000'
            - '9001:9001' # MinIO 控制台
        environment:
            PUID: 1000
            PGID: 1000
            MINIO_ROOT_USER: admin # 更改为你自己的用户名
            MINIO_ROOT_PASSWORD: adminadmin1 # 更改为你自己的密码
            #MINIO_SERVER_URL: https://xs.clxr30.top/
            #MINIO_BROWSER_REDIRECT_URL: https://xs.clxr30.top/minio/ui
        volumes:
            - ./data:/data # 数据存储目录
            #- /mnt/10t/file/minio_data:/data # 数据存储目录
            #cp -rv /home/compose/minio/data /mnt/10t/file/minio_data
            - ./minio:/root/.minio
        command: server /data --console-address ":9001" # 启动命令
        healthcheck:
            test: ['CMD', 'mc', 'ready', 'local']
            interval: 5s
            timeout: 5s
            retries: 5
        deploy:  # 在单机模式下使用deploy.resources  # 单机模式也支持这种语法
         resources:
          limits:
           #cpus: '0.7'
           #memory: 512M
           cpus: '0.1'
           memory: 356M

#data数据里面设置一个user账户和aaa的存储桶

关键配置说明

配置项 说明与建议
ports 9000:9000 用于 S3 API 访问,9001:9001 用于 Web 控制台访问。
environment MINIO_ROOT_USERMINIO_ROOT_PASSWORD最重要的配置,请务必修改为强密码。
volumes /mnt/10t/file/minio_data:/data 用于持久化存储MinIO 的所有数据。./minio/config:/root/.minio 用于持久化配置。
command server /data 指定数据目录,--console-address ":9001" 明确指定控制台端口。
healthcheck 健康检查配置,确保服务正常运行。

注意:生产环境中请务必修改 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 的值,并使用强密码。

🚀 启动与验证

  1. 启动 MinIO 服务docker-compose.yml 文件所在目录执行: bash docker-compose up -d 此命令会拉取镜像并在后台启动容器。

  2. 检查服务状态 bash docker-compose ps 如果看到 minio 容器的状态为 Up,说明服务已成功启动。

  3. 查看实时日志(可选) 如果遇到问题,可以通过以下命令查看容器日志来排查: bash docker-compose logs -f minio

  4. 访问 Web 控制台 打开浏览器,访问 http://你的服务器IP:9001

    • 使用配置的用户名(admin)和密码(adminadmin)登录。
    • 如果一切正常,你将看到 MinIO 的管理界面。

⚙️ 基础配置与使用

  1. 创建存储桶(Bucket)

    • 登录 MinIO 控制台后,点击左侧菜单的 "Buckets"
    • 点击 "Create Bucket" 按钮。
    • 输入 Bucket 名称(如 my-bucket),然后点击 "Save" 保存。
  2. 设置访问策略

    • 在 Bucket 列表中找到你创建的 Bucket,点击右侧的操作按钮。
    • 选择 "Edit policy"
    • 可以根据需要设置 Bucket 的访问权限(如只读、只写、读写等)。
  3. 上传和下载文件

    • 点击 Bucket 名称进入详情页。
    • 点击 "Upload" 按钮可以上传文件或文件夹。
    • 文件上传后,可以通过右侧菜单下载或分享文件。
  4. 使用客户端工具(可选) MinIO 提供了 mc 命令行工具,可以方便地管理 MinIO 服务: ```bash # 配置 MinIO 服务器 mc alias set myminio http://localhost:9000 admin adminadmin

    列出所有 Bucket

    mc ls myminio

    上传文件

    mc cp localfile.txt myminio/my-bucket/ ```

🔒 维护与管理

  • 服务管理

    • 停止服务docker-compose down
    • 重启服务docker-compose restart
    • 查看服务状态docker-compose ps
  • 数据备份

    • 定期备份你的 docker-compose.yml 文件。
    • 最重要的是备份数据目录/mnt/10t/file/minio_data(根据你的卷挂载配置)。
  • 版本更新: MinIO 活跃更新,建议定期升级: bash # 进入 docker-compose.yml 所在目录 docker-compose down docker-compose pull # 拉取最新镜像 docker-compose up -d # 可选:清理无用镜像 docker image prune

🐛 常见问题排查

问题现象 可能原因与解决方法
无法访问 Web 控制台 1. 检查防火墙/安全组是否放行了 9001 端口
2. 确认容器是否正常运行:docker-compose ps
3. 查看容器日志:docker-compose logs minio
登录失败 1. 确认用户名和密码与 docker-compose.ymlMINIO_ROOT_USERMINIO_ROOT_PASSWORD 设置的一致。
2. 检查环境变量是否正确设置。
文件上传失败或权限错误 1. 检查 Bucket 的访问策略设置。
2. 确认 MinIO 服务对挂载的数据目录有读写权限。
存储空间不足 1. 检查宿主机磁盘空间:df -h
2. 清理不必要的文件或扩展存储空间。

💡 提示:单机版 MinIO 适合开发和测试环境,生产环境建议使用分布式部署以确保数据的高可用性。

希望这份教程能帮助你顺利完成 MinIO 的部署!享受高性能对象存储带来的便利!